简体   繁体   English

如何对几个输入一起做一个if参数?

[英]How to make an if argument on several inputs together?

I have been trying to make an if argument that will check if several inputs(that have the same class) have a value of negative number on several. 我一直试图做一个if参数,它将检查几个输入(具有相同类)是否在几个输入上具有负数。 If one of them have, I want to have an error message. 如果其中之一有,我想收到一条错误消息。 I have been trying to do so, and I got the error message that I wanted but it continues to the next step eventhough I wrote return and event.preventDefault. 我一直在尝试这样做,尽管我写了return和event.preventDefault,但我得到了我想要的错误消息,但该错误消息仍继续进行下一步。 My Fiddle 我的小提琴

My code below: 我的代码如下:

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

Your problem comes from the rest of your code. 您的问题来自其余代码。 event.preventDefault() will not return out of the submit handler, it will just prevent the default form submit behavior. event.preventDefault()不会从提交处理程序中返回,只会阻止默认的表单提交行为。

Here's what you can do: 您可以执行以下操作:

$("#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++) {

        }
        */
    });

Btw the code is even more consise without jQuery: 顺便说一句,没有jQuery的代码更加简洁:

var inputs = [].slice.call(document.querySelectorAll('.inventoryInput'));

if (inputs.some(haveValueUnderZero)) {
    //error
}

function haveValueUnderZero(input) { return input.value < 0; }

Try this: 尝试这个:

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

Also, you need to insert other functions like $("#withdraw").show(); 另外,您需要插入其他函数,例如$("#withdraw").show(); inside the else statement. else语句中。

JSFiddle Demo JSFiddle演示

Try this: 尝试这个:

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

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

    })
});

try a hidden verify function: 尝试隐藏验证功能:

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

You can use a filter function to return only elements that do not match your condition. 您可以使用filter功能仅返回不符合您的条件的元素。

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM