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

时间:2013-11-28 22:06:48

标签: javascript jquery validation

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

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

任何帮助都非常赞赏。

4 个答案:

答案 0 :(得分:5)

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

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

检查http://jsfiddle.net/odiseo/bQSA3/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);
}

请注意}之后将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);
    });
});