custom_func的附加参数?

use*_*ser 3 jqgrid

我想为custom_func重用以下代码:

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

我尝试给它一个额外的参数如下:

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

并称之为:

{name:'cntrct_id', editrules:{custom: true, custom_func:validLen(8)} },
Run Code Online (Sandbox Code Playgroud)

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

Ole*_*leg 5

我建议你使用

editoptions: { maxlength: 8}
Run Code Online (Sandbox Code Playgroud)

而不是您使用的自定义验证.在这种情况下,将直接使用maxlength属性创建input元素.因此,用户将无法输入更多字符作为指定的字符maxlength.

更新:您无法更改任何回调函数的界面,但您可以custom_func通过以下方式共享不同的公共代码.您可以定义具有三个参数的自定义验证函数

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

并以下列方式使用它

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

如果你需要在this里面使用,custom_func你可以return validLen(value, colName, 8);改为return validLen.call(this, value, colName, 8);.