我想禁用发送表单的按钮,直到设置了复选框,我想用一个很好的简短jQuery代码来解决它。但是必须有一个错误,没有任何反应。有没有人有想法?
JS:
$(document).ready(function(){
$('#terms').keyup(function(){
if($('#terms').is(':checked')){
$('#btn').removeAttr('disabled');
}else{
$('#btn').attr('disabled');
}})}
HTML:
<input id="terms" type="checkbox" value="" name="terms">
<input id="btn" name="register" type="button" value="Register" disabled/>
答案 0 :(得分:3)
实际上它很简单:
$('#terms').on("change", function() {
$("#btn").prop("disabled", !this.checked);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="terms" type="checkbox" value="" name="terms">
<input id="btn" name="register" type="button" value="Register" disabled/>
其中!this.checked
是当前复选框状态的布尔值
当然有一种jQuery方式:$(this).is(":not(:checked)")
但是没有必要,因为您应该习惯使用简单的 vanilla JS来了解this
环境和可用的DOM属性{ {3}}
答案 1 :(得分:3)
使用Escaping backslash in windows paths passed to unix programs代替attr:
e.g。
$('#btn').prop('disabled', true);
属性通常会影响DOM元素的动态状态 更改序列化的HTML属性。例子包括价值 输入元素的属性,输入的禁用属性和 按钮,或复选框的选中属性。 .prop()方法 应该用来设置禁用和检查而不是.attr() 方法。应该使用.val()方法进行获取和设置 值。
注意:您使用keyup
代替change
事件来获取复选框。
请注意,您的示例可以简化为只传递开/关的布尔表达式:
$(function(){
$('#terms').change(function(){
$('#btn').prop('disabled', !$(this).is(':checked'));
});
});