selectの現在の値を出力する送信ボタンがあります。on.change
オプションが選択される前に値が印刷されないようにするために、少なくとも1つのオプションが選択されていることを確認するイベントを追加しました。
問題は、select の内容が静的ではないことです。交換可能です。そのため、新しい値が出力される前に、プロセスを繰り返します (古い変更イベントのバインドを解除し、新しいイベントを追加します)。これを行わないと、使用できなくなった古い値が印刷される可能性があります。
私は試しました:
$('#smth').off('change');
しかし、うまくいきません。イベントを削除してもボタンを押すことができます。
コード:
HTML:
<input type="submit" value="reset" id="reset" />
<input type="submit" value="change val" id="chv"/>
<br/><br/>
<select id="smth">
<option selected="1" disabled="1">Choose</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
</select>
JS:
$('#smth').on('change',function() {
$('#sub').on('click', function() {
$('#container').text($('#smth').val());
});
});
$('#chv').one('click', function() {
$('#smth').html('<option selected="1" disabled="1">Choose</option><option>test</option>');
});
$('#reset').on('click',function(){
$('#smth').off('change');
});
フィドルの例: