1

私はjQueryモバイルの初心者で、エリア用の1つのスライダー、今日のグラスタイプ用のラジオボタングループ、およびグラスの代わりに使用される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>
4

1 に答える 1

1

私はあなたの問題を見つけました。ラジオボックスが実際に選択される前にラジオの値を見つけようとするため、コントロールグループをクリックするだけでは不十分です。わずかなタイムアウトを作成する必要があります。

これが実際の例です: 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 を使用しないでください。代わりに、私の例のように自分でイベントをバインドします。

于 2013-02-07T09:45:50.457 に答える