jquery将参数传递给自定义验证函数

时间:2012-06-17 16:16:36

标签: jquery

我写了一个自定义方法来验证价格是否有效。例如。没有字母等因此我写了一个自定义方法。但我不知道如何传递价值。

方法:

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

2 个答案:

答案 0 :(得分:0)

编辑 - 抱歉我对第一个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验证器是更好的IMO。

答案 1 :(得分: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的值,如'required'

productOrginalPrice:{
    required: true,
    checkIsPriceValid: true
}

DEMO http://jsfiddle.net/mpFz3/