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

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

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

试试这个 – 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); } } 

使用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"); } 

我想你可以算一下有多少输入有文字

 $('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}); } });