custom_func的其他参数?

时间:2013-02-14 18:50:16

标签: jqgrid

我想为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)} },

没用。以前的代码可以工作,但如上所述,我想要一个可重用的功能。这有解决方法吗?我做错了吗?

1 个答案:

答案 0 :(得分:5)

我建议你使用

editoptions: { maxlength: 8}

而不是您使用的自定义验证。在这种情况下,将直接使用maxlength属性创建input元素。因此,用户将无法输入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);
        }
}

如果您需要在this内使用custom_func,则可以将return validLen(value, colName, 8);更改为return validLen.call(this, value, colName, 8);