2014-10-09 24 views
0

剛開始使用ParlseyJS進行一些我們正在做的新工作。ParlseyJS - 刪除已禁用字段的驗證

我遇到了一個問題,我隱藏並禁用了一堆基於下拉值(在表單中)的下拉列表。當我提交此表格時,這些字段將繼續得到驗證。這些領域正在通過jQuery禁用這樣:

minage.removeAttr('data-parsley-minagecheck').attr('data-parsley-excluded', '').attr('disabled', 'disabled'); 
maxage.removeAttr('data-parsley-maxagecheck').attr('data-parsley-excluded', '').attr('disabled', 'disabled'); 
xxx.removeAttr('data-parsley-xxxcheck').attr('data-parsley-excluded', '').attr('disabled', 'disabled'); 
yyy.removeAttr('data-parsley-yyycheck').attr('data-parsley-excluded', '').attr('disabled', 'disabled'); 

你會發現,我也刪除自定義的驗證檢查和我加入排除領域的下拉列表的屬性。

我該如何阻止他們被驗證?

我更新了我的Parsley.js文件設置ParsleyDefaults這樣:

excluded: 'input[type=button], input[type=submit], input[type=reset], input[type=hidden], [disabled]', 

回答

3

綁定到你的表單香菜後,這是不夠的刪除屬性。這是因爲歐芹將創建一個ParsleyForm對象與該表單的約束。

此外,在Parsley綁定到表單時,將考慮excluded選項。在你的情況下,這些字段還沒有被禁用,所以它們將被考慮用於驗證目的。

您需要的是在刪除屬性後銷燬並應用歐芹,因此ParsleyForm不包含這些字段。如果使用的是香菜V2,你應該屬性的刪除或插入後添加以下代碼:

$("#myForm").parsley().destroy(); 
$("#myForm").parsley(); 

也注意到,在jQuery 1.6的.attr()狀態

在jQuery 1.6中, .attr()方法對尚未設置的屬性返回undefined。 要檢索並更改DOM屬性,例如checked,selecteddisabled表單元素的狀態,請使用.prop()方法。

所以,你應該用

minage.removeAttr('data-parsley-minagecheck') 
    .attr('data-parsley-excluded', '').prop('disabled', true); 
+0

感謝您的Milz,我會給早上這一個去當我回到辦公室! – Nanz 2014-10-09 17:20:33

+0

@nz_dev,這是否適合你?你有任何需要都請告訴我。 – 2014-10-15 11:03:39

+0

嘿米爾茲,耶夥伴這工作完美的我。謝謝你的幫助! – Nanz 2014-10-15 14:47:21