2013-02-14 37 views
3

我想重用custom_func下面的代碼:custom_func的附加參數?

function validLen(value,colName){ 
    if(value.length === 8){ 
     return [true,""]; 
    } 
    else{ 
     return [false,"fail"]; 
    } 
} 

我試圖給它額外的參數如下:

function validLen(value,colName,length){ 
    if(value.length === length){ 
     return [true,""]; 
    } 
    else{ 
     return [false,"fail"]; 
    } 
} 

並調用它像這樣:

{name:'cntrct_id', editrules:{custom: true, custom_func:validLen(8)} }, 

沒沒有工作。前面的代碼可以工作,但正如所述,我想要一個可重用的函數。有沒有解決方法?我做錯了嗎?

回答

5

我會建議你使用

editoptions: { maxlength: 8} 

,而不是你使用自定義的驗證。如果輸入元素將直接使用maxlength屬性創建。因此用戶將無法輸入更多字符,如maxlength所指定的那樣。

修訂:你不能改變任何回調函數的接口,但您可以通過以下方式做不同custom_func有着共同的代碼。您可以定義有三個參數的自定義驗證函數一樣

function validLen (value, colName, valueLength) { 
    if (value.length === valueLength) { 
     return [true, ""]; 
    } 
    else { 
     return [false, "fail"]; 
    } 
} 

,如果你需要使用thiscustom_func裏面,那麼你可以改變return validLen(value, colName, 8);return validLen.call(this, value, colName, 8);使用它通過以下方式

{ 
    name: 'cntrct_id', 
    editrules: { 
     custom: true, 
     custom_func: function (value, colName) { 
      return validLen(value, colName, 8); 
     } 
} 

+0

用戶需要輸入正好8個字符,不多不少。我已經在該字段上實現了maxlength選項,但這並不妨礙用戶輸入少於8個字符。我的問題的核心是如何使custom_func類型的函數可重用,而不是如何解決這個特定的問題。 – user 2013-02-18 13:14:16

+0

@MattWall:看看我的答案的** UPDATED **部分。 – Oleg 2013-02-18 14:16:33

+0

奧列格,這很有道理。你再次提供了一個清晰而合乎邏輯的例子。謝謝。 – user 2013-02-18 14:22:08