2012-12-20 33 views
0

form是一個查看購物車。購物者可以更改任何物品的數量。每個qty輸入是name="quantity[row_id]"row_id = 012 ...等JörnZaefferer的jQuery驗證:如何配置規則以接受名稱[#]

欲被要求的值和數值(讀:整數)。與quantity[*]quantity*

$("#my-view-cart").validate({ 
    rules: { 
    quantity: { 
     required: true, 
     digits: true 
    } 
    } 
}); 

我試過規則,但這是徒勞的:我已經試過這一點。

如果在插件的文檔中有一個示例,我沒有看到它。

或者還有另外一種方法可以用這個插件做到這一點?我在產品添加到購物車頁面上使用上述規則,但這只是一個輸入。有了多個輸入我卡住了。

+3

您可以使用類來設置驗證,而不是在代碼中聲明它們。 ''input name =「quantity [0]」class =「required digits」/>'and'$(「#my-view-cart」)。validate()'讓插件處理它想要的名字。 –

+0

@KevinB Thx。我以爲我嘗試了數字,並沒有在班上工作。我會再嘗試。 –

+1

查看我的答案,演示如何使用'class'和一個工作演示。 – Sparky

回答

1

你需要用輸入的name引號:

$("#my-view-cart").validate({ 
    rules: { 
    "quantity[1]": { 
     required: true, 
     digits: true 
    } 
    } 
}); 

還是凱文乙方在評論說,並添加class="required digits"到輸入元素。

+0

是的,謝謝。我無意中把它放在引號中。但是有沒有一種方法來通配卡片的索引?換句話說,而不是必須重複[0],[1]等 - 每個條目 - 我可以做一些像[*](這不起作用)? –

1

「或者還有另一種方法可以用這個插件來做到這一點嗎?」

使用內置的rules()方法添加規則並將其分配給classSee documentation.

注:必須調用此方法後打電話.validate()

HTML:

<form id="form"> 
    <input type="text" class="myclass" name="whatever" /> 
    <input type="text" class="myclass" name="something" /> 
    <input type="text" class="myclass" name="another" /> 
</form> 

的jQuery:

$("#form").validate({ 
    // my options 
}); 

// the following method must come AFTER .validate() 
$('#form').find('.myclass').each(function() { 
    $(this).rules('add', { 
     required: true, 
     digits: true, 
     messages: { 
      required: "Required input", 
      digits: "Please only enter digits" 
     } 
    }); 
}); 

jsFiddle DEMO


編輯:

OP的評論:

「我不想讓結帳單擊如果錯誤顯示。任何 想法?」

你只使用.valid()返回一個布爾值來測試表單是否通過驗證。喜歡的東西...

if ($('#form').valid()) { 
    // form passes validation, allow your click 
} else { 
    // form fails validation, do something else 
} 

如果這不是你所需要的,發佈關於這個不相關問題的新問題將是有必要的。

+0

哦。尼斯。我不知道可以爲我自己的課程定製規則。哇。我以爲他們只是爲了田野。 –

+0

@ChiefAlchemist,哦,是的,強大的東西。這可以用來處理動態添加的表單字段......只要它們具有適當的'class'。 – Sparky

+0

不要忘記驗證器功能addClassRules - http://jsfiddle.net/SaLNp/1/ –