以下に示すコードを使用して、特定のオプションが<select>
ダイアログから選択されたときに確認ボックスを作成しています。「バー」オプションを選択すると、確認ダイアログが正常に表示されます。ただし、キャンセルすると、選択したオプションが空白になります。最初に別のオプションを選択し、次に「バー」を選択してキャンセルすると、以前に選択したオプションに戻ります (これは望ましい動作です)。最初のキャンセルは失敗するのに、その後のキャンセルは失敗しないのはなぜですか?
<html>
<head>
<title>Test of jQuery confirm select</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(function(){
$('#example').change(function() {
var selected = $(this).val();
if (selected == 'bar') {
if (!confirm('Are you sure?')) {
$(this).val($.data(this, 'current')); // added parenthesis (edit)
return false;
}
}
$.data(this, 'current', $(this).val());
});
});
</script>
</head>
<select id="example">
<option value="none" selected="selected">--Select an Option--</option>
<option value="foo">foo</option>
<option value="bar">bar</option>
<option value="que">que</option>
</select>
<body>
</body>
</html>
明確にするために、他のオプションから「バー」に移動すると、これは発生しません。ただし、「バー」が最初に選択したオプションである場合は常に発生します。