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