检查输入框数组不为空

时间:2016-04-09 13:54:45

标签: javascript jquery html submit

最好想在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[]输入类型有何用处,因为会有一个动态数量的答案,并希望确保用户选择了多少,所有这些框都已填充。

谢谢!

3 个答案:

答案 0 :(得分: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();
    }
}); 

答案 1 :(得分: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

答案 2 :(得分: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;
    }
});

是的,作为 Rory McCrossan 的答案,过滤器将是选项。我刚修改为目标哪个实际文本框为空。