2014-03-04 84 views
3

如何獲得消息的VAR total的價值,設置變量值jQuery的消息+ jquery.validate

也是我試圖函數內聲明,但它給未定義的變量

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

在結果我得到空白值總計

+1

你是否檢查過$(「#current_fund」).val()'給你任何/正確的值? – Akshay

+0

@Akshay已設置 – SagarPPanchal

+0

請顯示HTML標記和對'.validate()'的調用。 – Sparky

回答

0

剛加入這一行()的函數作爲您的第二個參數{回報 'SRY sktiman' +總+ '是剩餘價值'},你可以很容易地使用這個變量

var total = ''; 
$.validator.addMethod("valueNotEquals", function (value, element, arg) { 
//Your default code here 
}, function() {return 'sry sktiman' + total + 'is remaining value'}); 
+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'); 
+1

你能發佈你的html代碼嗎? –

1

addMethod Documentation說:「添加自定義驗證方法。它必須由一個名字(必須是合法的javascript標識符),一個基於JavaScript的功能和默認的字符串消息。」

所以,您要添加自定義驗證函數到插件,並執行該功能。

嘗試設置字段自定義驗證和填補這一領域的運行您的自定義功能。只需,入住total VAR值。

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

EDIT

該解決方案的小提琴可以找到here(感謝Sparky提供的代碼)。

+0

@Sparky是的,它的確如此,你只需要在全局範圍內聲明'total' var,就像OP一樣。看到這[小提琴](http://jsfiddle.net/eZm7x/3/)。 –

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/

+1

我更喜歡這個參數的方式。很好的答案。 –