2012-01-27 69 views
2

我有一個簡單的日期選擇器我用於幾個日期輸入。這裏的代碼:Datepicker:按Esc保留佔位符文本作爲值

$('input.isDate').datepicker({ 
    numberOfMonths: 1, 
    onSelect: function() { 
     $(this).removeClass('placeholder'); //default is to keep placeholder style format 
    },          
    onClose: function() { 
     $(this).focus(); //otherwise focus goes to neverneverland 
    } 
}); 

Datepicker顯示焦點。兩個.isDate輸入的佔位符值爲「Date」。

如果用戶在日期選擇器中按下退出鍵,則會出現問題。這樣做的預期行爲是關閉日期選擇器並恢復輸入點框中的任何文本。在我的情況下,輸入框的值將成爲佔位符值。在這一點離開框,在框中留下「Date」這個詞作爲一個硬性值,而不是一個佔位符提示符,所以它會跳過我的一些字段級日期驗證。

我已經能夠通過在用戶離開盒子時消隱文本值來解決這個問題,但是當用戶離開日期選擇器手動輸入日期時,用戶不應該刪除該文本。我已經做了很多嘗試,使用事件來擺脫這一點,並沒有一個工作:我試過focusin,在按鍵中捕捉esc,以及datepicker本身的create,beforeDisplay,onSelect和onClose事件。在所有這些情況下,箱子的價值仍然是「」。顯然,日期選擇器在完成所有業務後設置了框的值,我認爲在此設計中不考慮佔位符。可能是一個錯誤?我們使用Whitelabel皮膚,所以它們可能以某種方式干擾日期選擇器?無論如何,我非常感謝解決方法或解釋。我還沒能找到很多。

TIA

+0

你是如何提供placholder價值的?你真的使用'placeholder'屬性嗎?也許發佈你的HTML會很有幫助 - 更好的是,在jsFiddle上放置一個測試用例。 – JMM 2012-01-27 21:27:04

+0

是的,使用佔位符屬性。 HTML非常簡單:'' – BobRodes 2012-01-27 23:07:51

回答

0

不知道更多關於你的應用程序,我想你會更好用好標籤和離開輸入欄。 「HTML5」中還有一個實際的佔位符功能。

+0

我可以做到這一點。我對web開發還是比較缺乏經驗,很顯然,有很多功能需要避免。例如,Internet Explorer。 :)但是,如果可以的話,我想深究一下。 – BobRodes 2012-01-27 23:10:47

+0

當我這麼說的時候,我以爲你正在設置'value =「」'來提供一個佔位符。我推薦使用標籤來代替。用placholder =「」'這樣做肯定合法,但我不知道支持有多好。我很好奇這裏也發生了什麼。我瞭解它的要點,但我在敘述之後遇到了一些麻煩 - 例如我不確定是什麼「在我的情況下,輸入框的值變成了佔位符值。」手段。如果您可以發佈演示,尤其是在jsFiddle上,那麼將會很有幫助。哪些UA做/不會發生這種情況? – JMM 2012-01-28 00:53:26