如果未输入文本,请禁用按钮

时间:2012-08-14 16:57:29

标签: jquery

我想实现这样的目标。 我有4个文本字段和一个选择字段,表单提交所需。我想保持按钮被禁用,除非文本字段有值并且从下拉列表中选择了一个选项。我的代码是here

我遇到的问题是每当我在4个文本字段中输入数据时,虽然下拉列表被选中为默认文本,但按钮被启用。更改下拉列表后,它将永久禁用。

3 个答案:

答案 0 :(得分:14)

试试这个 - DEMO

$('#fname, #lname, #zipcode').on("keyup", action);
$('#location').on("change", action);

function action() {
    if( $('#fname').val().length > 0 && $('#lname').val().length > 0 && $('#zipcode').val().length > 0 && $('#location').val() != '' ) {
        $('#submit').prop("disabled", false);
    } else {
        $('#submit').prop("disabled", true);
    }   
}

答案 1 :(得分:1)

使用JQuery:

var text_valid = false, dropdown_valid = false;
$("input[type='text'].required:focus").each(function() {
    if($(this).val().length > 0){
        text_valid = true
    }
}

if($("#mydropdown option:selected").length){
    dropdown_valid = true;
}

if(text_valid && dropdown_valid) {// Our form is valid
    $("#mybutton").removeAttr("disabled");
}
else { // Our form is invalid
    $("#mybutton").attr("disabled", "disabled");
}

答案 2 :(得分:0)

我认为您可以计算有多少输入文本

$('input').keyup(function(){
    var count = $('input:text').filter(function(){return $(this).val() == "";}).size();
});

但是,由于您使用的是select标签,我认为您应该检查它是否有值。

$('input').keyup(function(){
    var count = $('input:text').filter(function(){return $(this).val() == "";}).size()
            + $('select:text').filter(function(){return $(this).val() == "";}).size();
    if(count > 0){
        $('#submit').button({disabled: true});
    }else{
        $('#submit').button({disabled: false});
    }
});