Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jqueryeach()循环输入字段进行验证_Jquery_Forms_Input_Each - Fatal编程技术网

使用jqueryeach()循环输入字段进行验证

使用jqueryeach()循环输入字段进行验证,jquery,forms,input,each,Jquery,Forms,Input,Each,我正在制作一个表单,希望代码仅在输入值为数字时执行。我试图避免使用某种验证插件,并想知道是否有一种方法可以循环输入字段并检查值 我一直在尝试以下方法,但我认为我的逻辑是错误的: (#monthlyincome是表单id) 有什么想法吗 这是全部更新的代码: $("#submit").click(function() { $("#monthlyincome input[type=text]").each(function() { if (!isNaN(this.value

我正在制作一个表单,希望代码仅在输入值为数字时执行。我试图避免使用某种验证插件,并想知道是否有一种方法可以循环输入字段并检查值

我一直在尝试以下方法,但我认为我的逻辑是错误的:

(#monthlyincome是表单id)

有什么想法吗

这是全部更新的代码:

$("#submit").click(function() {

    $("#monthlyincome input[type=text]").each(function() {
        if (!isNaN(this.value)) {
            // processing data      
            var age         = parseInt($("#age").val());
            var startingage = parseInt($("#startingage").val());

            if (startingage - age > 0) { 

                $("#field1").val(startingage - age);
                $("#field3").val($("#field1").val());

                var inflationyrs    = parseInt($("#field3").val());
                var inflationprc    = $("#field4").val() / 100;
                var inflationfactor = Math.pow(1 + inflationprc, inflationyrs);
                $("#field5").val(inflationfactor.toFixed(2)); 

                var estyearlyinc    = $("#field6").val();
                var inflatedyearlyinc = inflationfactor * estyearlyinc;
                $("#field7").val(FormatNumberBy3(inflatedyearlyinc.toFixed(0), ",", "."));

                var estincyears = $("#field2").val();
                var esttotalinc = estincyears * inflatedyearlyinc;
                $("#field8").val(FormatNumberBy3(esttotalinc.toFixed(0), ",", "."));

                var investmentrate   = $("#field9").val() / 100;
                var investmentfactor = Math.pow(1 + investmentrate, inflationyrs);
                $("#field10").val(investmentfactor.toFixed(2));

                var currentsavings = $("#field11").val();
                var futuresavings  = currentsavings * investmentfactor;
                $("#field12").val(FormatNumberBy3(futuresavings.toFixed(0), ",", "."));

                //final calculations
                var futurevalue = (1 * (Math.pow(1 + investmentrate, inflationyrs) - 1) / investmentrate);
                var finalvalue = (1 / futurevalue * (esttotalinc - futuresavings));

                $("#field13").val(FormatNumberBy3(finalvalue.toFixed(0), ",", "."));

            }
            // end processing
        }
    });

});

FormatNumberBy3是用于。。。格式化数字。:)

是一个字符串。您需要先尝试将其转换为数字。在这种情况下,一个简单的酉
+
就可以做到:

if (!isNaN(+this.value)) {
  // process stuff here
}

在这里进行试井,效果很好:

$(function() {
    $("#submit").click(function() {
        $("#myForm input[type=text]").each(function() {
            if(!isNaN(this.value)) {
                alert(this.value + " is a valid number");
            }
        });
        return false;
    });
});
在这样的表格上:

<form method="post" action="" id="myForm">
    <input type="text" value="1234" />
    <input type="text" value="1234fd" />
    <input type="text" value="1234as" />
    <input type="text" value="1234gf" />
    <input type="submit" value="Send" id="submit" />
</form>

按照您认为合适的方式移动返回值

编辑:链接到代码SDD到OPs表单

基于上面的Sondre(谢谢!Sondre)示例,我在Fiddle中开发了一个示例,以便大家能够更好地理解如何实现

例如:

$(“#提交”)。在(“单击”,函数(){
var isValid=[];
var chkForInvalidAmount=[];
$('.partialProdAmt')。每个(函数(){
if($.trim($(this.val())-1){
如果($.inArray(“false”,chkForInvalidAmount)>-1){
$(“.msg”).html(“请输入正确的格式”);
返回false;
}否则{
$(“.msg”).html(“一切看起来都不错”);
}
}否则{
$(“.msg”).html(“任何字段中至少需要一个金额”);
返回false;
}
});


没有检查这个,但它突然出现在我的脑海中。如果你在所有输入元素上执行each(),它很可能也会包括submit按钮,因此它会检查submit的值,如果不是数字,则会失败。没有测试过,但似乎合乎逻辑;)另外,那里的代码没有正确关闭,但这可能只是一个复制粘贴错误。@Sondre,我也这么认为,但他可以(也应该)使用
来解决这个问题。@Sondre:我一直在尝试使用一个类(只对应于几个输入字段)来解决相同的问题(否定)结果。关闭确实是一个复制粘贴错误。:P@Box9:实际上我没有使用按钮,但即使我使用$(“.classname”)。each()。@Box9 Ye,使用任何其他类型的元素提交应该可以修复它。或者针对特定的输入类型,如输入[type=text]因为它很可能只是你想检查的文本字段。在单选按钮上进行检查没有多大意义;)@Alex Berg好的,你可以测试一下,也许你可以根据自己的情况调整这个函数。我的建议是为你的表单做一个简单的检查。希望这能对你有所帮助,伙计:)将你的表单分为两个表单,其中一个是fi可以填充的ELD,而另一个是只读部分,结果似乎粘贴在其中。这是为了避免表单验证尝试触及只读部分,就我所知,该部分不需要验证,因为它是从您的计算中提供的数据,应该设置在那里。感谢您的回答。但仍然没有运气,完全是我gnores if语句…我的头撞到墙上了。你的代码当然有效,我找不到与我的代码有任何区别,但我的代码仍然不起作用…@Alex好吧,如果没有看到更多的代码,我就帮不了你了。很可能是某个愚蠢的错误,一旦你发现它,你会笑它;)哈哈,很可能…我会采取行动用整个代码块进行更新,如果您有时间,可以随时查看。
<form method="post" action="" id="myForm">
    <input type="text" value="1234" />
    <input type="text" value="1234fd" />
    <input type="text" value="1234as" />
    <input type="text" value="1234gf" />
    <input type="submit" value="Send" id="submit" />
</form>