2012-08-14 55 views
4

我想實現類似這樣的功能。 我有4個文本字段和一個表單提交所需的選擇字段。除非文本字段有值並且從下拉列表中選擇了一個選項,否則我希望禁用此按鈕。我的代碼是here如果文本未輸入,保持按鈕被禁用

我遇到的問題是每當我在4個文本字段中輸入數據,並且雖然下拉列表被選中默認文本按鈕啓用。在我更改下拉菜單後,它將被永久禁用。

回答

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); 
    } 
} 
+2

+1打我 – Adil 2012-08-14 17:07:51

+0

@Zoltan:有是我猜的代碼,錯誤當所有的文本字段中輸入,然後再下拉選擇按鈕被禁用 – user525146 2012-08-14 17:49:23

+0

更新了答案 - HTTP ://jsfiddle.net/C2mRd/6/ – 2012-08-14 18:10:27

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

我想你可以指望有多少投入有文字

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

但是,因爲你使用的是選擇標籤我認爲你應該檢查它是否有價值。

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