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通过以下方式共享不同的通用代码。您定义具有三个参数的自定义验证函数,例如

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

如果您需要使用thisinside ofcustom_func那么您可以更改return validLen(value, colName, 8);return validLen.call(this, value, colName, 8);.

于 2013-02-15T08:50:59.017 回答