2016-04-09 25 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的答案,过滤器将是选项。我只是修改目标是哪个实际的文本框为空。