Tôi có một hộp chọn và tôi muốn thêm xác nhận trước khi thay đổi nó thành một tùy chọn cụ thể. Ví dụ:jQuery cách hoàn tác thay đổi đã chọn
<select name="select">
<option value="foo" selected="selected">foo</option>
<option value="bar">bar</option>
</select>
$('select').change(function() {
var selected = $(this).val();
if (selected == 'bar') {
if (!confirm('Are you sure?')) {
// set back to previously selected option
}
}
});
Tôi đang nghĩ về việc thêm một trường nhập ẩn và cập nhật giá trị của nó mỗi khi chọn được thay đổi. Bằng cách đó tôi có thể lấy giá trị trước đó trong hàm change
. Example:
<input type="hidden" name="current" value="foo" />
$('select').change(function() {
var selected = $(this).val();
var current = $('input[name=current]').val();
if (selected == 'bar') {
if (!confirm('Are you sure?')) {
$(this).val(current);
return false;
}
}
$('input[name=current]').val(selected);
});
Có một/cách tốt hơn dễ dàng hơn để thực hiện điều này?
Tốt, không biết về điều đó. Rất hữu ích và hoạt động tuyệt vời! Cảm ơn. – Alec
Công việc tốt. Có cần một dòng bổ sung bên ngoài để khởi tạo 'hiện tại' với giá trị ban đầu, và là $ (this) .data() không có sẵn trong năm 2010? – Tim
Để khởi tạo 'current' với giá trị ban đầu, tôi chuyển sang $ (this) .data (…) thay vì $ .data (this,…) và sau đó thêm vào kịch bản của tôi: if ($ ('select'). > 0) {$ ('select'). Dữ liệu ('current', $ ('select'). Val()); } –