简单问题我无法解决,我有以下功能:
function finalCheck(){
var result = true;
jQuery("#carloan-form :input[type=text]").each(function() {
if(!this.value){this.value = 0;}
if(jQuery.isNumeric(this.value) && this.value>=0) {
jQuery(this).parent().children('.cal-error').slideUp(300)
}else{
result = false;
jQuery(this).parent().children('.cal-error').slideDown(300);
jQuery('.cal-result').slideUp(300);
}
});
return result;
}
基本上问题是if(!this.value){this.value = 0;}
如果没有值我需要在继续验证表单之前将其设置为零,但这似乎只在我第二次验证时生效。
所以这一切归结为如果我在每个循环中将输入值设置为0,它只在函数完成后将其考虑在内。
这是JSFIDDLE,与我当前的问题相同,只有在第二次点击时才会显示正确的值。
任何帮助都非常赞赏。
答案 0 :(得分:5)
答案 1 :(得分:1)
问题是当你获取值时,虽然这在你的代码片段中并不明显,只有JSFiddle。所以,你有这个:
var finalValue = $('#test').val();
var testInput = test();
if(testInput){
$('span').text(finalValue);
}
它需要是这样的:
var testInput = test();
if(testInput){
var finalValue = $('#test').val();
$('span').text(finalValue);
}
请注意1>}之后将finalValue
设置为的动向。
工作小提琴 - http://jsfiddle.net/bQSA3/4/
也许您错误的地方认为调用test()
会将引用设置为$('#test').val()
输入的值。它改为获得值的副本。如果test
中的值发生更改,则需要再次获取该值。
答案 2 :(得分:0)
试着把它......
if(!this.value){this.val(0);}
答案 3 :(得分:0)
以下代码(简化)始终在提醒中显示 true ,我认为这是预期的行为。
<强> HTML 强>
<form id="carloan-form">
<input type="text" />
<input type="text" />
<input type="text" />
<button id="check">check</button>
</form>
<强>脚本强>
$(function () {
$("#check").click(function() {
var result = true;
jQuery("#carloan-form :input[type=text]").each(function() {
if(!this.value){this.value = 0;}
if(jQuery.isNumeric(this.value) && this.value>=0) {
}else{
result = false;
}
});
alert(result);
});
});