jQuery Mobile - 计算和onClick问题

时间:2013-02-07 09:17:02

标签: jquery jquery-mobile

我是jQuery mobile的初学者,我正在尝试创建一个简单的函数,通过使用一个区域滑块,今天的glastype的radiobutton组和一个名为moniflex的材料来帮助人们进行能量计算。玻璃,将导致节能。

我遇到的问题是: - 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 个答案:

答案 0 :(得分:1)

我找到了你的问题。单击一个控制组是不够的,因为您将尝试在实际选择radiobox之前找到一个无线电值。您需要创建一个轻微的超时。

以下是一个有效的例子:http://jsfiddle.net/Gajotres/yRbUT/

$(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);    
}

如果可能的话,不要在jQuery Mobile上使用onclick。而是自己绑定事件,就像在我的例子中一样。