Select onchange 事件第一次不起作用

Select onchange event does not works on first time

我有这个 javascript 代码,它在 Framework7 中用于 phonegap 应用程序。我希望在选择该选项后立即更改 table 中的值;这在第一次选择一个值时不起作用,但在第二次选择时完美无缺。

$('#mySelect931').on('change', function (e) {

  var value = document.getElementById("mySelect931").value;
      //myApp.alert(value);

      if(value == 'M4'){
            var a = 'M4'; //value of d
            var b = '14'; // value of b to 125
            var c = '-'; //value of b to 200
            var d = '-'; // value of b over 200
            var e = '2.8'; // value of k
            var f = '7.66'; // value of e
            var g = '7'; // value of s
        }
});

这是 html 代码。

<select id="mySelect931" style='background-color: #e3e3e3; color: black;'>
    <option value="0" selected="selected">Select Value</option>
    <option value="M4">M4</option>
    <option value="M5">M5</option>
    <option value="M6">M6</option>
</select>

如果要在选择值后立即设置值,则需要使用onclickonchange 仅当新选择的值与实际选择的值不同时才有效(您的代码与我尝试的一样完美)。

试试下面的代码

HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<select id="mySelect931" style='background-color: #e3e3e3; color: black;'>
    <option value="0" selected="selected">Select Value</option>
    <option value="M4">M4</option>
    <option value="M5">M5</option>
    <option value="M6">M6</option>
</select>

JQUERY
jQuery(document).ready(function(){
    jQuery('#mySelect931').change(function(){
        alert(jQuery(this).val());
    }); 
});

我已经试过 运行 你的代码,它工作得很好,即使加载了 framework7。所以,至少我们知道 framework7 不是这里的真正问题。我认为您以某种方式在元素 #mySelect931 上附加了另一个事件侦听器。您可以尝试使用 $('#mySelect931').off(); 删除您的元素上的所有事件侦听器,然后找出这是否是根本原因。

请检查代码段:

    // code works even without the below line
    $('#mySelect931').off();  // remove all event listeners for this element
    $('#mySelect931').on('change', function (e) {
        var value = document.getElementById("mySelect931").value;
        alert('selected Value: ' + value);
        if(value == 'M4'){
            var a = 'M4'; //value of d
            var b = '14'; // value of b to 125
            var c = '-'; //value of b to 200
            var d = '-'; // value of b over 200
            var e = '2.8'; // value of k
            var f = '7.66'; // value of e
            var g = '7'; // value of s
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.5.4/js/framework7.min.js"></script>

<select id="mySelect931" style='background-color: #e3e3e3; color: black;'>
    <option value="0" selected="selected">Select Value</option>
    <option value="M4">M4</option>
    <option value="M5">M5</option>
    <option value="M6">M6</option>
</select>

另一个 肮脏的 hack 可能是,您自己触发 change 事件。即 $('#mySelect931').trigger('change'); 然而,这并不是正确的处理方式。