如何将几个输入的if参数组合在一起?

时间:2015-05-23 19:34:32

标签: javascript jquery

我一直试图创建一个if参数来检查几个输入(具有相同类)的输入是否具有负数值。 如果其中一个有,我想要一个错误信息。 我一直在尝试这样做,并且我收到了我想要的错误消息,但是当我编写return和event.preventDefault时它会继续下一步。 My Fiddle

我的代码如下:

$("#inventoryForm").submit(function (event) {
          $(".inventoryInput").each(function(){
            if($(this).val() < 0) {
            event.preventDefault();
            $("#inventoryError").slideDown().text("blablabla");
            ;
            return;
            }
        });
});

5 个答案:

答案 0 :(得分:1)

您的问题来自其余代码。 <{1}}不会退出提交处理程序,它只会阻止默认表单提交行为。

以下是您可以做的事情:

event.preventDefault()

在没有jQuery的情况下,代码更加简洁:

$("#inventoryForm").submit(function (event) {
       var error = false;

       //You seem to always want to prevent the default behavior
       event.preventDefault();

          $(".inventoryInput").each(function(){
            if($(this).val() < 0) {

                error = true; //Indicate there was an error
                $("#inventoryError").slideDown().text("blablabla");
                return false; //This stops the iteration
            }

        });

        //Stop processing if there was an error
        if (error) return;

        $("#inventorySubmit").hide();
        $("#inventoryChange").show();
        $("#withdraw").show();
        $(".inventoryInput").attr('disabled','disabled');
        sum = 0;
         /* var money = table.find("td:nth-child(2)");
        for (var i = 0; i<money.length; i++) {

        }
        */
    });

答案 1 :(得分:0)

试试这个:

$("#inventoryForm").submit(function (event) {
    event.preventDefault();
    $(".inventoryInput").each(function () {
        if ($(this).val() < 0) {
            $("#inventoryError").slideDown().text("blablabla");
            return false;
        } else {
            $("#inventorySubmit").hide();
            $("#withdraw").show();
            return true;
        }
    });
});

此外,您需要在$("#withdraw").show();语句中插入其他函数,例如else

<强> JSFiddle Demo

答案 2 :(得分:0)

试试这个:

<script>
      $(".inventoryInput").each(function(){
             var el = $(this)
            $("#inventoryForm").on("submit", function (event) {
            if(el.val() < 0) {

                $("#inventoryError").slideDown().text("blablabla");
                return false;
        }

    })
});

答案 3 :(得分:0)

尝试隐藏验证功能:

&#13;
&#13;
window.verify = function() {
  var valid = true;
  $('input').each(function() {
    if ($(this).val() == "" || $(this).val() < 0) {
      valid = false;
    }
  });
  if (valid) {
    $('#submit').click();
  } else {
    alert("Please complete all fields.");
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="inventoryForm">
  <input type="text" placeholder="Product Id" name="prod_id" id="prod_id" />
  <input type="number" placeholder="Quantity" name="quantity" id="quantity" />
  <button type="button" onclick="verify()">Submit</button>
  <button id="submit" type="submit" style="display:none"></button>
</form>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

您可以使用filter函数仅返回与您的条件不匹配的元素。

var hasErrorElements = $('.inventoryInput').filter(function() {
    return parseInt($(this).val()) < 0;
}).length > 0;

if (hasErrorElements) {
    alert('Error!');
    event.preventDefault();
    return false;
}