Bạn nên sử dụng .removeAttr('disabled')
thay vì .attr('disabled', false)
. Ngoài ra, bạn nên cache your jQuery selectors.
Chỉnh sửa: Suy nghĩ về điều này sau khi thực tế. Bạn có thể muốn "trống" văn bản đã được nhập vào trường nếu bạn vô hiệu hóa nó, vì vậy tôi đã thêm .val('')
, nếu bạn cũng muốn ẩn nó, bạn có thể thêm .hide()
và .show()
vào hai trường hợp.
tôi đặt lại với nhau this fiddle hiển thị phiên bản làm việc:
var $state = $('#state'), $province = $('#province');
$state.change(function() {
if ($state.val() == 'other') {
$province.removeAttr('disabled');
} else {
$province.attr('disabled', 'disabled').val('');
}
}).trigger('change'); // added trigger to calculate initial state
Các .trigger('change')
sẽ "kích hoạt" một sự kiện thay đổi, hiệu quả hoạt động các chức năng một lần trong khi bạn ràng buộc nó. Bằng cách này, #province
sẽ bị tắt/bật dựa trên trạng thái được chọn tại thời điểm mã được chạy. Nếu không có nó, tỉnh sẽ có sẵn ngay cả khi nhà nước không phải là "khác" trừ khi bạn cũng đã thêm disabled='disabled'
vào thẻ <input>
trong html của mình.
Cảm ơn bạn! Bạn có thể giải thích kích hoạt thêm một chút. Không thực sự hiểu. – JeroenEijkhof
@WmasterJ - Đã thêm một chút giải thích – gnarf
Xin cảm ơn gnarf. – JeroenEijkhof