2016-04-09 60 views
1

最好希望在jQuery中做到這一點,簡單驗證來檢查輸入框是否爲空。但是,這些是輸入框的動態數組。該代碼應有助於使更多的意義:檢查輸入框的數組不是空的

<input type="text" id="qtn" name="question" /> 
<input type="text" name="answer[]" /> 
<button type="button" id="btn"> Save </button> 

我理解這個問題輸入常用的想法將涉及這樣的事:

$('#btn').click(function() { 
    var question = $.trim($('#qtn').val()); 

    // Check if empty of not 
    if (question === '') { 
     alert('Text-field is empty.'); 
     return false; 
    } else { 
     $('#form').submit(); 
    } 
}); 

這將如何工作,爲answer[]輸入類型將有一個動態的答案數量,並希望確保無論用戶選擇了多少,所有這些框都已填滿。

謝謝!

+0

你的意思是,它應該驗證所有輸入框? – ameenulla0007

回答

4

您可以使用filter()方法找到form中的任何空文本框。另外請注意,您應該檢查提交的form本身,而不是點擊按鈕,因爲有人可以在焦點位於文本框時按下回車鍵來提交表單。試試這個:

$('form').submit(function(e) { 
    var $emptyFields = $(this).find(':text').filter(function() { 
     return this.value.trim() == ''; 
    }); 

    if (!$emptyFields.length) { 
     e.preventDefault(); // stop the form submission 
     alert('Please fill out all fields'); 
    } else { 
     $form.submit(); 
    } 
}); 
+0

很好的答案,喜歡使用過濾器。我還建議在需要驗證的輸入中添加一個「必需」類,以便排除稍後可能需要的非必需字段。您還可以向空白處添加「錯誤」類,以突出顯示用戶的錯誤。 – NOBrien

+0

看起來不錯,現在就來試試吧! – StackMeUp123

+0

這似乎導致我的表單實際提交表單區域內的任何地方點擊?即使在輸入文本框內單擊? – StackMeUp123

1

嘗試這樣

$('#btn').click(function() { 
    var checkValidate = false; 
    $('input[type=text]').each(function() { 
      if(!$.trim($(this).val())){ 
      alert('Some fields are empty'); 
      checkValidate = true; 
      return false; 
      } 
    }); 
    if(!checkValidate) { 
     $('#form').submit(); 
    } 
}); 

Demo

1
$('#btn').click(function() { 
    var getTargetText = $(":text").filter(function() { return this.value==""; }); 
    if($(getTargetText[0]).val()=="") { 
     alert("Please Enter this Field"); 
     $(getTargetText[0]).focus(); 
     return false; 
    } 
}); 

是啊,作爲羅裏McCrossan的答案,過濾器將是選項。我只是修改目標是哪個實際的文本框爲空。