ユーザーが選択コントロールで行った選択を確認できるようにするか、キャンセルした場合は前の値にロールバックできるようにします。以下はChrome/Safariで正常に動作しますが、何を試してもFirefox(Mac)では動作しません。
HTML:
<select id='my-select'>
<option value="client">Client</option>
<option selected="selected" value="assistant">Assistant</option>
<option value="manager">Manager</option>
</select>
JS:
$('#my-select').focus(function() {
//Store old value
$(this).data('lastValue',$(this).val());
});
$('#my-select').change(function(e) {
var lastRole = $(this).data('lastValue');
var newRole = $(this).val();
if(confirm("Change user's role from "+lastRole+" to "+newRole+"?"))
{
// The control may remain in focus, so we update lastValue here:
$(this).data('lastValue',newRole);
// Do stuff
}
else {
$(this).val(lastRole);
}
});
フィドル: http: //jsfiddle.net/yxzqY/13/
この問題は次のように示されます。
- 「マネージャー」を選択します
- [キャンセル]をクリックします(選択した値='アシスタント')
- もう一度「マネージャー」を選択します
- [キャンセル]をクリックします( Chromeでは選択された値='アシスタント' 、FireFoxでは選択された値='マネージャー' )
私は困惑しています-Firefoxでこれを機能させる方法や、ブラウザ間の差分動作を解決する方法がわかりません。