2016-01-20 74 views
0

我的問題大部分是在這個問題上https://stackoverflow.com/questions/34846925/jquery-validate-rails-4-dynamically-update-rule-after-rendering-partial-via-aJQuery驗證 - 添加規則之前提交

我還沒有得到任何反饋它。我知道這可能很難理解。基本上我需要在提交之前根據html數據屬性更改規則的參數。我想知道是否有辦法做到這一點。

我嘗試添加一個submitHandler內的規則:

$('#custom-tag').validate({ 
    onfocusout: false, 
    submitHandler: function(form) { 
     $('#custom-tag').rules("add", { 
     tagUniqueness: $('#taglist').data('tag-list').split(', ') 
     }); 
    }, 
    rules: { 
     tag: { 
     minLengthSquish: 2, 
     maxLengthSquish: 25, 
     alphanumericAndWhitespace: true 
     } 
    }, 
    tooltip_options: { 
     tag: { placement: 'right', animation: false } 
    } 
    }); 

但這沒有工作,我意識到現在submitHandler是當提交有效中運行的代碼(也許應該叫validSubmissionHandler)。

我還假設添加一個與已存在的相同名稱的規則將覆蓋當前的規則和參數。如果沒有,我只需要刪除然後添加。

有沒有辦法在提交之前添加規則?

+0

請不要多次發表相同的問題。如果您第一次沒有得到足夠的關注,請[請閱讀此頁](http://stackoverflow.com/help/how-to-ask)並對原始問題進行必要的修改。 – Sparky

+0

您不能將'.rules()'方法放在'.validate()'方法內。此外,'submitHandler'只會在有效表單上觸發,所以這不會起作用。 – Sparky

+0

@Sparky我不認爲這是重複的。我試圖簡單地問一下如何在提交之前立即添加規則。我以爲我沒有注意到其他問題,因爲太多了,所以我試圖把它分解成更易消化的部分。也許我應該刪除另一個,只是問這樣的小問題最終會導致解決方案。 – user4584963

回答

-1

看來你應該移動你的提交處理程序或你的驗證處理程序。 IE,像這樣:

$('form').submit(function(event) { 
    $('#custom-tag').rules("add", { 
    tagUniqueness: $('#taglist').data('tag-list').split(', ') 
    }); 

    if ($('#custom-tag').valid() === false) { 
    // 'this' is the form, 
    event.preventDefault(); 
    // stop the submittion 
    // ...message the user to let them know why the submit failed. 
    } 
}); 
+1

我不認爲你理解我的問題。我想在任何類型的提交之前添加一條規則。這不應取決於提交是否有效,因爲沒有提交任何內容。 – user4584963

+0

請查看我再次發佈的代碼。它會在任何提交中添加規則。對有效()的調用發生在添加規則之後,以確保在提交被大聲通過之前檢查新規則。否則,您可能會發現自己在該字段已被檢查並且您的新規則不起作用之後添加規則。 –

+0

該插件提供了一個'submitHandler'回調函數,因此您不必創建自己的回調函數。通過使用'.submit()'處理程序,您可能會破壞或繞過驗證插件。 – Sparky