0

価格が有効かどうかを検証するカスタムメソッドを作成しました。例えば。アルファベットなどはありません。したがって、カスタムメソッドを作成しました。しかし、私はどのように価値を渡すのか分かりません。

方法:

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

2 に答える 2

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 よりもはるかに優れています。

于 2012-06-17T16:22:32.583 に答える
0

で使用する名前addMethodは完全に任意であり、フォーム内の何かと一致する必要はありません。

checkIsPriceValid最初に、メソッド内の呼び出しに少なくとも 1 つの引数を渡す必要があります。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
}

デモhttp://jsfiddle.net/mpFz3/

于 2012-06-17T16:37:26.383 に答える