2013-02-07 2 views
1

저는 jQuery 모바일의 초보자입니다. 지역에 하나의 슬라이더를 사용하고 글래스 타입을위한 라디오 버튼 그룹을 사용하여 사람들이 에너지 계산을 할 수있게 해주는 간단한 함수를 만들려고합니다. glif 대신 moniflex라는 재료가 사용되어 에너지를 절약하게됩니다.jQuery Mobile - 계산 및 onClick의 문제

문제점은 다음과 같습니다. - onclick 이벤트가 safari mac/iPhone에서 작동하지 않습니다. - 값이 같지만 선택 항목이 동일합니다.

코드 :

<script type="text/javascript"> 


    function displayVals() { 

     var area = $("#slider1").val(); 
     var glas = $("input[name='Ftyp']:checked").val(); 
     var moniflex = $("input[name='Mflex']:checked").val(); 
     var summary = parseFloat(area * (glas - moniflex) * 107.28); 
     $("#Resultat").html(parseInt(summary) + " kWh"); 

    } 

    </script> 

    <div data-role="page" class="gridContainer clearfix"> 
    <div id="LayoutDiv1"> 
    <div data-role="header" id="Header"><img src="img/top.jpg"></div> 
    <div data-role="content" id="Content"> 
    <div data-role="fieldcontain"> 
    <div id="Resultat" class="Sum">0 kWh</div> 
    <div id="Yta"> 
    <label for="slider">Value:</label> 
    <input type="range" name="slider1" id="slider1" value="0" min="0" max="1000" step="1" onChange="displayVals();" data-highlight="true" /> 

     </div> 
     <div id="Glas"> 
     <div data-role="fieldcontain"> 
      <fieldset data-role="controlgroup" data-type="horizontal" onClick="displayVals();" > 
      <legend>Option</legend> 
      <input type="radio" name="Ftyp" id="Ftyp_0" value="5.5" /> 
      <label for="Ftyp_0">Enkelglas</label> 
      <input type="radio" name="Ftyp" id="Ftyp_1" value="3" /> 
      <label for="Ftyp_1">Dubbelglas</label> 
      </fieldset> 
     </div> 

     </div> 
     <div id="Material"> 
     <div data-role="fieldcontain"> 
      <fieldset data-role="controlgroup" data-type="horizontal" onClick="displayVals();" > 
      <legend>MONIFLEX</legend> 
      <input type="radio" name="Mflex" id="Mflex_0" value="3" /> 
      <label for="Mflex_0">10mm</label> 
      <input type="radio" name="Mflex" id="Mflex_1" value="1.9" /> 
      <label for="Mflex_1">20mm</label> 
      <input type="radio" name="Mflex" id="Mflex_2" value="1.4" /> 
      <label for="Mflex_2">30mm</label> 
      </fieldset> 
      </div> 

    </div> 
     </div> 




    </div> 
    </div> 
</div> 
</body> 
</html> 
+1

Safari/iOS에서 어떤 가치를 얻었습니까? – Gajotres

답변

1

나는 문제를 발견했다. 라디오 버튼을 실제로 선택하기 전에 라디오 값을 찾으려고하기 때문에 컨트롤 그룹을 클릭하는 것만으로는 충분하지 않습니다. 약간의 타임 아웃을 만들어야합니다.

여기에 동작하는 예제입니다 : http://jsfiddle.net/Gajotres/yRbUT/ jQuery를 모바일로 onclick을 사용하지 않는 가능하면 또한

$(document).on('pagebeforeshow', '#test-page', function(){  
    $(document).on('click', '[data-role="controlgroup"]', function(){  
     setTimeout(function() { displayVals(); }, 100); 
    }); 
    $("#slider1").on('slidestop', function(event, ui) { 
     displayVals(); 
    });  
}); 

function displayVals() { 
    var area = $("#slider1").val(); 
    var glas = $("input[name='Ftyp']:checked").val(); 
    var moniflex = $("input[name='Mflex']:checked").val(); 
    var summary = parseFloat(area * (glas - moniflex) * 107.28); 
    $("#Resultat").html(parseInt(summary) + " kWh"); 
    alert(area + ' - ' + glas + ' - ' + moniflex);  
} 

. 대신 내보기와 같이 직접 이벤트를 바인딩하십시오.

+0

jQuery Mobile을 클릭하는 대신 vclick을 사용합니다. 클릭이 너무 느리므로 모바일 장치에서 일부 경우에는 실행되지 않을 수 있습니다. – asgeo1

+0

안녕하세요, 답변 주셔서 감사합니다! 이것은 훨씬 더 잘 작동하지만 Safari 모바일에서 업데이트 할 정보를 얻지 못합니다. http://www.isolight.se/mobile/index.html 링크를 참조하십시오. – user2050065

+0

touchstart를 사용하여 스크립트를 업데이트하고 클릭하십시오. 라디오 버튼을 두 번 클릭하여 업데이트 된 값을 가져옵니다. '('touch-start click ','[data-role = "컨트롤 그룹"] ', function(), $ (document) .on ('pagebeforeshow ','# 테스트 페이지 ', function() { $ (document)) { 의 setTimeout (함수() {displayVals()}, 100); }) $ ("#의 slider1") CSTE 연구진 ('slidestop'함수 (이벤트, UI) { displayVals(); }); }); ' – user2050065