2011-02-11 59 views
3

我正在嘗試將jQuery驗證插件(http://docs.jquery.com/Plugins/Validation/)與字段提示結合使用。在同一TIme中使用jQuery驗證和字段提示

問題是,字段提示將文本置於value屬性中,並且由於value屬性中有文本,Validation插件沒有看到任何錯誤。

我的想法是如果字段爲空或者字段包含與字段提示相同的文本(即:如果有人在名字字段中輸入「First Name」,那麼驗證會拋出一個錯誤,那麼會產生一個錯誤。

是否有一起使用的驗證與代碼提示?

謝謝!

多倫一種優雅的方式

回答

3

有兩種「提示」代碼(更好作爲水印或placeh較舊的文本):那些替換字段的值以及那些在輸入上放置某種元素以使其看起來好像文本在輸入內的元素。

我認爲你使用的是第一種,所以一個簡單(最好)的解決方案是完全避免這些類型,然後切換到採用第二種方法的插件。有很多插件可以這樣工作,比如this one,只要確保閱讀它們的操作方式。

如果更改提示代碼不是一個選項,那麼你有兩個其他的選擇。兩者都是不理想,但也許一會更適合你:

上清除值提交

內提示代碼,綁定到submit活動形式,並遍歷所有的投入以清除任何與提示具有相同的值。

該方法的問題在於,必須執行之前驗證插件被初始化。當你輸入時,它也不適用於驗證字段。您還需要在驗證之後再次檢查輸入,以提示提示文本。

超越控制.VAL()

由於驗證插件使用jQuery的,你可以在此改變jQuery的.val()函數返回''如果該值等於提示:

var oldVal = $.fn.val; 
$.fn.val = function() { 
    var returnVal = oldVal.call(this); 
    if (returnVal == hintVal) returnVal = ''; 
    return returnVal; 
}; 

明顯缺點這是插件必須始終使用.val()來檢索輸入值。

+0

感謝您的支持! 但是我很難搞清楚如何將它應用到我當前的驗證代碼中,因爲這裏包含的語法看起來與jQuery驗證插件的函數初始化代碼沒有任何區別。 此外,是hintVal我需要在我的代碼中聲明更早的變量? – Doron 2011-02-14 22:41:47