2009-10-28 119 views
1

請問您可以看看這個http://jsbin.com/osolo/嗎?jQuery驗證器自定義方法

如果你在Min Age而不是數字中輸入一個字母,那麼點擊提交這個驗證使用jquery驗證器在自定義驗證方法中使用正則表達式,這個工作,但我現在正在尋找使它更加動態。

在定製驗證方法線

var data = $(element).metadata(); 

抓住正在驗證從元件的元數據,我想要做的是使用

data.validateOptions.regex 

作爲正則表達式來測試(我看不出這是一個問題),我可以看到的是一個問題是,如果該字段沒有驗證,而不是使用調用時提供的消息

jQuery.validator.addMethod(name, method, message) 

我想使用

data.validateOptions.message 

的錯誤消息從自定義方法中,任何人都可以點我在正確的方向嗎?

感謝

單次

回答

1

我認爲亞歷克斯的答案不會工作,因爲字符串在JS中是不可變的。

雖然接近。從Alex的代碼開始,如果創建一個包含數據對象(或者只是一個消息字符串)的閉包以及一個返回消息的函數,那麼可以將該函數作爲第三個參數傳遞給addmethod調用。 像這樣:

(function() { 
    var data = {}; 
    var messager = function() { 
     return data.validateOptions.message; 
    }; 
    jQuery.validator.addMethod("perorgproperty", function(value, element) { 
     debugger; 
     //alert('testing perorgproperty'); 
     data = $(element).metadata(); 
     return this.optional(element) || /^\d+$/i.test(value); 
    }, messager); 
})(); 
0

有關創建封閉是什麼?

var data = {}; 
jQuery.validator.addMethod("perorgproperty", function(value, element) { 
    debugger; 
    //alert('testing perorgproperty'); 
    data = $(element).metadata(); 

    return this.optional(element) || /^\d+$/i.test(value); 
}, data.validateOptions.message); 

只要函數評價該消息之前,將不只是message通過引用傳遞?