0

私は次のコードで作業しています:

<form id="myform">
  <select name="myselect" id="myselect"> 
    <option value="0">Default</option>
    <option value="1">Option 1</option>
    <option value="2" selected>Option 2</option>
    <option value="3">Option 3</option>
  </select>  
  <input type="submit" value="Go">
  <input type="reset" class="reset" value="Reset form">  
</form>

var $element = $('#myselect');

// Save current value of element
$element.data('oldVal', $element.val());

// Look for changes in the value
$element.on("change propertychange keyup input paste", function () {

    // If value has changed... (selects don't play nice -- if they've changed they obviously have to have changed, though)
    if ($element.data('oldVal') != $element.val() || $element.is('select')) {

        console.log("Old Value:", $element.data('oldVal'));
        console.log("new value:", $element.val());

        // Updated stored value
        $element.data('oldVal', $element.val());

    }
});

ここに jsfiddle があります: http://jsfiddle.net/HzkN5/8/

これを IE8 で表示し、他の操作を行わずに [フォームのリセット] をクリックすると、一連のイベントがコンソール ログに記録されます。

ここに画像の説明を入力

選択の値がまったく変更されていないため、これは奇妙です。最新の Chrome や FireFox では発生しません。

私は不思議に思っていました - なぜ私は価値の変化を何度も見ているのですか? 実際の選択値の変更のみを検出する方法はありますか?

4

1 に答える 1