2013-02-14 2 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)} }, 

Didn Не работай. Предыдущий код работает, но, как указано, я хочу использовать функцию многократного использования. Есть ли обходной путь для этого? Я делаю это неправильно?

ответ

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

Если вам нужно использовать this внутри custom_func, то вы можете изменить return validLen(value, colName, 8); к return validLen.call(this, value, colName, 8);.

+0

Пользователю необходимо ввести ровно 8 символов, не более того. Я уже внедрил параметр maxlength в этом поле, но это не мешает пользователю вводить менее 8 символов. Сердце моего вопроса заключается в том, как сделать функции типа custom_func повторно используемыми, а не как решить эту конкретную проблему. – user

+0

@MattWall: Посмотрите на ** ОБНОВЛЕНО ** часть моего ответа. – Oleg

+0

Олег, это имеет большой смысл. Еще раз вы предоставили четкий и логичный пример. Спасибо. – user

Смежные вопросы