2014-03-27 31 views
-1

我有一個formatter.js和驗證jquery插件的問題。與formatter.js和jQuery驗證插件不兼容?

<div class="formClear"> 
    <label for="text-basic"> 
     Phone<em> *</em></label> 
    <input type="tel" name="Phone" id="Phone" class="required" /> 
</div> 

當我採用以下格式的特定字段,然後使用jQuery驗證插件,使之成爲必填字段,該jQuery插件不再強制執行它作爲一個必填字段。

if (document.getElementById('Phone') != null) { 
    new Formatter(document.getElementById('Phone'), { 
     'pattern': '({{999}}) {{999}}-{{9999}}', 
     'persistent': true 
    }); 
} 

如果我評論的代碼塊出來,現場的requiredness強制執行......但是當兩個都很到位,不會出現在手機領域的驗證。就好像兩個人的設計不兼容。

具體來說,在調用checkForm()之後,errorMap對象除了Phone之外的所有驗證失敗。格式化程序是否清除了jquery驗證插件所依賴的某些事件處理程序,因此我需要爲其添加額外的代碼?任何洞察/代碼示例將不勝感激。

+0

兼容性無關吧。在使用這些有用的免費插件時,網站開發人員需要做一些常識性的整合。顯示足夠的代碼來製作簡明的示例,並且可能包含jsFiddle演示。你特別提到_「調用'checkForm()'」_就好像我們應該知道你在說什麼一樣。 – Sparky

+1

我對「格式化程序」一無所知,但如果jQuery Validate插件在字段中看到一個值,那麼所需的規則就已經滿足了。也許有一個解決方法,但你需要修正這個問題。請參閱:http://stackoverflow.com/help/how-to-ask – Sparky

+0

感謝您的建議,Sparky。你的評論讓我得到正確的答案。 – Jason

回答

0

問題來自格式化程序formatter.js會將格式化輸出放入文本框的值中,即使用戶沒有向該字段提供值。因此,在我的例子,就是提供的模式永遠不會從jQuery插件所需的字段驗證工作,除非我persistent設置爲false:

if (document.getElementById('Phone') != null) { 
    new Formatter(document.getElementById('Phone'), { 
     'pattern': '({{999}}) {{999}}-{{9999}}', 
     'persistent': false 
    }); 
}