单击复选框以禁用按钮

时间:2015-07-29 14:10:22

标签: javascript jquery forms

我想禁用发送表单的按钮,直到设置了复选框,我想用一个很好的简短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/>

2 个答案:

答案 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'));
    });
});