3

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)} },

うまくいきませんでした。前のコードは機能しますが、前述のように、再利用可能な関数が必要です。これに対する回避策はありますか? 私はそれを間違っていますか?

4

1 に答える 1

5

使用することをお勧めします

editoptions: { maxlength: 8}

使用するカスタム検証の代わりに。入力要素がmaxlength属性で直接作成される場合。そのため、ユーザーは で指定された文字をさらに入力することはできませんmaxlength

更新: コールバック関数のインターフェイスを変更することはできませんがcustom_func、次の方法で異なる共通コードを共有できます。次のような 3 つのパラメーターを持つカスタム検証関数を定義します。

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

次のように使用します

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

thisの中で使用する必要がある場合は、にcustom_func変更できます。return validLen(value, colName, 8);return validLen.call(this, value, colName, 8);

于 2013-02-15T08:50:59.017 に答える