jQuery如果值为空,则将其设置为0并进行验证

jQuery if value is empty set it to 0 and validate

本文关键字:设置 验证 如果 jQuery      更新时间:2023-11-27

简单问题我无法解决,我有以下功能:

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,与我当前的问题相同,只有在第二次单击时才会显示正确的值。

非常感谢任何帮助。

您可以为打印输出设置默认值

var finalValue = $('#test').val() || 0;

检查http://jsfiddle.net/odiseo/bQSA3/5/

问题是当获取值时,尽管这在代码片段中并不明显,只有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);
}

注意在调用test()之后将finalValue设置为的移动。

工作小提琴-http://jsfiddle.net/bQSA3/4/

也许您错了,认为对$('#test').val()的调用将引用设置为test输入的值。相反,它会获得该值的副本。如果test中的值发生更改,则需要再次获取该值。

试着把这个。。。

if(!this.value){this.val(0);}

下面的代码(简化)总是在alert中显示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);
    });
});