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

时间:2014-03-04 05:39:18

标签: javascript jquery jquery-validate

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

我也尝试声明内部函数,但它提供了未定义的变量

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');

结果我得到空白总值

5 个答案:

答案 0 :(得分: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'});

修改

可以找到此解决方案的小提琴 here (感谢Sparky提供的代码)。

答案 1 :(得分: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');

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

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

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

答案 2 :(得分:1)

尝试,

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'+ (parseFloat(9999999999.999999) - parseFloat($("#current_fund").val())) + 'is remaining value');

答案 3 :(得分:1)

addMethod Documentation中说:“添加自定义验证方法。它必须包含名称(必须是合法的javascript标识符),基于javascript的函数和默认字符串消息。”

因此,您要为插件添加自定义验证功能,并且 NOT 执行该功能。

尝试使用自定义验证设置字段并填写该字段以运行自定义函数。只需 AFTER 即可检查total var值。

答案 4 :(得分:0)

只需添加此行 function(){return'sry sktiman'+ total +'is remaining value'} 作为您的第二个参数,您可以轻松使用此变量

var total = ''; 
$.validator.addMethod("valueNotEquals", function (value, element, arg) {
//Your default code here
}, function() {return 'sry sktiman' + total + 'is remaining value'});