2015-09-26 17 views
5

Các yếu tố đầu vào có thể dễ dàng bị tắt nhưng cách nào có thể kích hoạt chúng?Không thể bật tính năng nhập bị vô hiệu hóa

Mã bên dưới có thể tắt nhưng không bật yếu tố đầu vào.

$('#dis').click(function() { 
 
    $('#inp').attr('disabled', 'true'); 
 
}); 
 

 
$('#enb').click(function() { 
 
    $('#inp').attr('disabled', 'false'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input id='inp' type='text'> 
 
<button id='enb'>Enable</button> 
 
<button id='dis'>Disable</button>

+2

Đừng sử dụng $().thay vào đó attr() user $(). prop(). Xem http://api.jquery.com/prop/ – Lacrioque

Trả lời

6

Chỉ cần để mở rộng câu trả lời ...

Vấn đề thực sự là bạn đang cố gắng để thiết lập tàn tật false qua setAttribute() mà không hành xử như bạn đang mong đợi. Một phần tử bị tắt nếu thuộc tính bị tắt được đặt, bất kể giá trị như vậy, disabled="true", disabled="disabled"disabled="false" đều tương đương: phần tử bị tắt).

Bạn nên thay vì loại bỏ các thuộc tính hoàn chỉnh

$('#enb').click(function() { 
    $('#inp').removeAttr('disabled'); 
}); 
3

Chỉ cần loại bỏ các thuộc tính disabled

$('#enb').click(function() { 
    $('#inp').removeAttr('disabled'); 
}); 
+0

Đây không phải là phương pháp hay. từ tài liệu: 'Không sử dụng phương pháp này để xóa các thuộc tính gốc như đã chọn, bị vô hiệu hóa hoặc được chọn.' – Selfish

+0

tại sao không? bất kỳ thông tin chi tiết nào @ NitaiJ.Perez? – dorado

+0

@anurageldorado, các tài liệu đề cập đến nó có thể loại bỏ các prop/attr vĩnh viễn, không cho phép nó được tái thiết lập. – Selfish

2

Bạn có thể sử dụng removeAttr()

$('#dis').click(function() { 
 
    $('#inp').attr('disabled', 'true'); 
 
}); 
 

 
$('#enb').click(function() { 
 
    $('#inp').removeAttr('disabled'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input id='inp' type='text'> 
 
<button id='enb'>Enable</button> 
 
<button id='dis'>Disable</button>

0

thử

$('#dis').click(function() { 
    $('#inp').attr('disabled', 'true'); 
}); 

$('#enb').click(function() { 
    $('#inp').removeAttr('disabled'); 
}); 

disable="disable" bằng disable tự

0

Có một cách! Bạn cần phải loại bỏ các thuộc tính tàn tật như vậy:

$('#inp').removeAttr('disabled'); 
1

Hi Hãy thử đoạn code dưới đây

Có khác nhau giữa các giá trị Boolean và chuỗi thay vì 'true' sử dụng đúng mà không cần báo giá

$('#dis').click(function() { 
 
    $('#inp').attr('disabled', true); 
 
}); 
 

 
$('#enb').click(function() { 
 
    $('#inp').attr('disabled', false); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input id='inp' type='text'> 
 
<button id='enb'>Enable</button> 
 
<button id='dis'>Disable</button>

+1

Một lần nữa, phương thức attr() không hoạt động với các giá trị boolean – Lacrioque

+0

@Lacrioque đang nói gì? – jlocker

+0

Tài liệu trực tuyến Jquey: http://api.jquery.com/prop/ Xem Thuộc tính so với Thuộc tính – Lacrioque

3

Vấn đề là với mã của bạn có truefalse viết trong dấu ngoặc kép, làm cho chúng chuỗi thay vì các phép toán luận. Lưu ý rằng cả hai số 'true''false' đều là giá trị trung thực và do đó mã của bạn đặt giá trị được bật thành true trong cả hai trường hợp.

Tôi hy vọng sau đây sẽ làm việc cho bạn, kiểm tra các đoạn mã cũng như:

$('#dis').click(function() { 
 
    $("#inp").prop('disabled', true); 
 
}); 
 

 
$('#enb').click(function() { 
 
    $("#inp").prop('disabled', false); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input id='inp' type='text'> 
 
<button id='enb'>Enable</button> 
 
<button id='dis'>Disable</button>

1
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<input id='inp' type='text'> 
<button id='enb'>Enable</button> 
<button id='dis'>Disable</button> 
<script type="text/javascript"> 
    $(document).ready(function() { 

$("#dis").click(function() { 
    $('#inp').prop("disabled", true); 

}); 

$("#enb").click(function() { 
    $('#inp').prop("disabled", false); 
}); 

}); 
</script> 
Các vấn đề liên quan