2012-06-17 4 views
0

Я написал собственный метод проверки правильности цены. Например. нет алфавита и т. д. Поэтому я написал собственный метод. Но я понятия не имею, как передать ценность.Параметр jquery pass для пользовательской функции проверки

Метод:

function checkIsPriceValid(input) 
{ 

    alert(input); 
    return false; 
} 

Форма проверки

$(function() { 
jQuery.validator.addMethod("checkIsPriceValid", function (value, element) { 
    return checkIsPriceValid(); 
    //check whether checkbox dist and algo is checked 
}, "Invalid number"); 


$("#addProductForm").validate({ 
    errorPlacement: function (error, element) { 
    //error.appendTo(element.prev()); 
    error.insertAfter(element); 
    }, 
    rules: { 


productName: { 
    required: true 

}, 
productCategory:{ 
    required: true 

}, 
productDescription: { 
    required: true 
}, 
productOrginalPrice:{ 
    required: true, 
    checkIsPriceValid: this.val() 
} 

ответ

0

Edit - К сожалению, я был неправ о первом Param (все еще не совсем уверен, что это ровно). Я никогда не использовал плагин, но увидеть, если это работает:

$(function() { 
jQuery.validator.addMethod("checkIsPriceValid", function (value, element) { 
    return checkIsPriceValid(value, element); 
    //check whether checkbox dist and algo is checked 
}, "Invalid number"); 

, то вы должны иметь

function checkIsPriceValid(value, element) 
{ 

    alert(value); 
    return false; 
} 

И для метода валидации:

$("#addProductForm").validate({ 
... 
productOrginalPrice:{ 
    required: true, 
    checkIsPriceValid: "Price is invalid" 
} 

В то время как я не использовал этот плагин, просто глядя на документы и другие примеры, этот плагин имеет довольно уродливый API. Валидатор JQuery Tools намного лучше ИМО.

0

Имя, которое вы используете в addMethod, абсолютно произвольно и не должно совпадать ни с чем в форме.

Прежде всего необходимо передать хотя бы один аргумент вашему вызову checkIsPriceValid внутри метода. Я использую value, так как это то, что вы хотите проверить.

jQuery.validator.addMethod("checkIsPriceValid", function (value, element) { 
    return checkIsPriceValid(value); 
    //check whether checkbox dist and algo is checked 
}, "Invalid number"); 

function checkIsPriceValid(value){ 
    return value /* some test*/ ? true :false; 

} 

Затем в validate.rules объекта используется метод, добавив имя метода, как вы сделали, но присвоить значение true таким же образом, как и другие правила, которые вы использовали, как «требуется»

productOrginalPrice:{ 
    required: true, 
    checkIsPriceValid: true 
} 

DEMO http://jsfiddle.net/mpFz3/

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