将变量值设置为jquery message + jquery.validate

Sag*_*hal 3 javascript jquery jquery-validate

如何total在消息中获取var的值,

并且还我试图函数内声明,但它给未定义的变量

var total = '';
$.validator.addMethod("valueNotEquals", function (value, element, arg) {
    var fund_old = $("#current_fund").val();
    var fund_new = $("#new_fund").val();

    total = parseFloat(9999999999.999999) - parseFloat(fund_old);

    if (parseFloat(fund_new) <= parseFloat(total)) {
        return true;
    } else {
        return false;
    }
    return true;
}, 'sry sktiman' + total + 'is remaining value');
Run Code Online (Sandbox Code Playgroud)

结果我得到总值的空白值

jua*_*rro 5

根据jQuery.validator.addMethod()您可以使用的文档jQuery.validator.format()生成一个函数来接收验证方法的参数并返回一个字符串消息,因此创建一个忽略任何参数并返回一个字符串的函数应该工作:

var total = '';
$.validator.addMethod("valueNotEquals", function (value, element, arg) {
    var fund_old = $("#current_fund").val();
    var fund_new = $("#new_fund").val();

    total = parseFloat(9999999999.999999) - parseFloat(fund_old);

    if (parseFloat(fund_new) <= parseFloat(total)) {
        return true;
    } else {
        return false;
    }
    return true;
}, function() {return 'sry sktiman' + total + 'is remaining value'});
Run Code Online (Sandbox Code Playgroud)

编辑

这个解决方案的小提琴可以在这里找到(感谢Sparky提供的代码).


Spa*_*rky 5

可以在消息内使用可选参数.

第三个参数,可选参数,(你怎么称呼它arg)可以在你的代码中的代表arg[0],arg[1]等等.

然后相应的值可以在消息中使用{0},{1}等等.

在外部进行计算.addMethod()并使用arg参数传递值.

$.validator.addMethod("valueNotEquals", function(value, element, arg){

    var fund_old= $("#current_fund").val();
    var fund_new =$("#new_fund").val();

    // do this calculation where the rule is declared. See 'validate()'
    //total =  parseFloat(9999999999.999999) - parseFloat(fund_old);

    if(parseFloat(fund_new) <= parseFloat(total)){
        return true;
    } else {
        return false;
    }
    return true;
},'sry sktiman {0} is remaining value');
Run Code Online (Sandbox Code Playgroud)

由于您没有显示您的.validate()或HTML标记,可能是这样的......

$('#myform').validate({
    rules: {
        fund_old: {
            // your rules
        },
        fund_new: {
            valueNotEquals: function() {
                return ($parseFloat(9999999999.999999) - parseFloat($("#current_fund").val()));
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

原始演示:http: //jsfiddle.net/eZm7x/