如果文本框中包含值,请删除禁用按钮

时间:2014-02-24 11:49:55

标签: javascript jquery html

任何人都可以帮助我如何删除按钮禁用属性,如果带有类(number)的文本框内有值,如果文本框为空则再次禁用。

当前代码:

<input type="text" name="name" class="number" value="hello" readonly />
<input type="submit" name="send" id="send" disabled />

脚本代码:

<script type="text/javascript">
$('.number').on('input', function () {
    $('#send').prop("disabled", !$.trim(this.value));
});
</script>

5 个答案:

答案 0 :(得分:2)

使用:

 $('.number').keyup(function() {
    if($(this).val() != '') {
       $('#send').removeAttr('disabled');
    }else{
       $('#send').attr('disabled',true);
  }});

答案 1 :(得分:1)

您当前的代码工作正常:JSFiddle demo

问题是您的.number元素设置为readonly,这意味着它不接受任何input(这是您正在处理的事件)。

如果您在服务器端设置readonly属性,我想您也可以在服务器端设置disabled属性。

答案 2 :(得分:0)

您可以收听keydown个事件,每按一次键,您都会检查该元素的值:

$( ".number" ).on( "keydown", function ( e ) {
    var current_value = $( this ).val();
    // The keypress event actually happens before the character is inserted. 
    var value = $.trim( current_value + e.which );
    if ( value.length > 0 ){
      $( "#send" ).attr( "disabled", false );
    }
});

这种方法的唯一问题是,如果用户将值复制粘贴到文本框中,它将无法工作。另一种方法是使用setInterval每隔X秒检查一次输入。

答案 3 :(得分:0)

试试这样:

    /* The keyup event fires right after the user releases a key */
    $(".search-bar").on("keyup", function() {
        var state = this.value === "";
        $("#send").attr("disabled", state);
    })

答案 4 :(得分:0)

尝试这样的事情

$('.number').on('change', function () {
    if ($(this.val() == '') {
        $('#send').removeAttr('disabled');
    } else {
        $('#send').attr('disabled', '');
    }
});