Ich möchte, dass ein Benutzer eine Auswahl bestätigen kann, die er in einem Auswahlsteuerelement trifft, oder zum vorherigen Wert zurückkehren kann, wenn er den Vorgang abbricht. Das Folgende funktioniert gut in Chrome/Safari, aber egal was ich versuche, ich kann es nicht in Firefox (auf Mac) zum Laufen bringen.
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);
}
});
Fiedel: http://jsfiddle.net/yxzqY/13/
Das Problem lässt sich wie folgt veranschaulichen:
- Wählen Sie 'Manager'.
- Klicken Sie auf "Abbrechen" (Ausgewählter Wert = "Assistent")
- Wählen Sie erneut "Manager".
- Klicken Sie auf "Abbrechen" (Ausgewählter Wert = "Assistent") in Chrom , Ausgewählter Wert = 'Manager' in FireFox )
Ich bin einfach ratlos - keine Ahnung, wie man das in Firefox hinbekommt, oder wie man das unterschiedliche Verhalten in verschiedenen Browsern beheben kann.