我是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>
答案 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。而是自己绑定事件,就像在我的例子中一样。