2010-01-20 319 views
1

因此,我正在構建一個應用程序,其中數據從數據庫中返回,其中日期可以是多種不同的格式,即'2008','05/22/99','8/20/2004' 。並且可以說,例如,用戶想要通過點擊「編輯」按鈕來編輯日期(2009)。那麼在編輯窗口中,它應該顯示一個盒子裏已經存在'2009'年的輸入框。然而,問題是,datepicker看到2009年,不認可這種日期格式作爲默認值,而是插入今天的日期。jQuery datepicker自動更改輸入值

這顯然是一個巨大的問題,當有人去編輯日期時,不可避免地會引起瘋狂的混亂。

有沒有辦法讓這種行爲停止?我在設置中缺少一些簡單的東西嗎?

對不起,我沒有網上的例子,非常感謝任何人有任何想法如何克服這一點。

感謝,

傑夫

+1

這是默認行爲,我相信。如果datepicker給出的是年份,那麼你會如何默認? 1/1/[年]? – Jason 2010-01-20 02:37:39

+0

我希望datepicker一旦打開就默認爲今天的日期或01/01/2009。無論用戶如何輕鬆地進行設計。但是輸入類型='文本'字段中的VALUE應該保留之前的任何內容。即2009年,而不是今天的日期。 – Jeff 2010-01-20 02:43:50

回答

0

你應該使用jQuery來設置日期選擇器後的文本框的值已經連接到文本框。

$('txtBox').datepicker(); 
$('txtBox').val('2009'); 
or 
document.getElementById('txtBox').value = '2009'; 

只要您在附加日期選擇器代碼後執行此操作,您的預設值就不會被覆蓋。

+0

我以爲同樣的事情,但當我嘗試它沒有奏效。儘管Firebug顯示「2009」,但提醒文本框的當前值返回「未定義」。不知道爲什麼... – Jeff 2010-01-20 03:30:32

1

通常它不會改變它..

http://jqueryui.com/demos/datepicker/的例子不會做你的描述。因此,它可能是你使用的選項,或者你已經截獲喜歡的OnClose事件的..

我們看一些代碼..

+0

是的默認行爲不改變文本框的值,直到用戶明確選擇日期。 http://jsbin.com/aroca – Anurag 2010-01-20 03:01:44

+0

該示例在datepicker初始化時尚未具有輸入文本框的值。 (快速示例) 數據庫生成html /表:

​​2009​​EDIT
日期:動作
使用jQuery: 功能編輯(OBJ) { 變種tbody = $(obj).parent()。find('td'); var editTextBox =「」; } $('。jDate')。datepicker(); 現在,當editTextBox在頁面的另一部分繪製時,它的值不會是我設置的值,而是今天的日期。 – Jeff 2010-01-20 03:22:30

+0

yikes。對不起,上面的格式... – Jeff 2010-01-20 03:31:28

1

最好的情況是存儲在數據庫中的日期完全一樣的格式。接下來的最佳案例是,在服務器上重新格式化日期或使用javascript,以便datepicker的日期都是相同的格式,這樣每個人的生活都變得更加輕鬆。

Javascript has plenty of ways to manipulate dates

+0

我完全不同意。最好的例子是存儲日期,但用戶輸入日期。如果用戶想要將日期存儲爲2009,那麼我們可以說他們錯了,並顯示與他們輸入的日期不同的日期。顯然,儘管這會讓程序員的生活變得更加令人沮喪。但是,這是良好的應用用戶設計的必要條件。 – Jeff 2010-01-20 03:28:59

+0

我會同意,如果一個日期不是一個完整的目標數據。以不同的方式寫日期對於它的意義絕對沒有任何意義,所以在這種情況下,好的「應用程序用戶設計」就是採取不一致並使其一致。如果你真的想處理這個問題,請自己解決。 – carillonator 2010-01-20 05:09:33

0

顯然,在初始化datepicker後設置了日期選擇器選項後,會出現此問題。

此鏈接早些時候發佈工作正常,但這併不併說明我的問題:http://jsbin.com/axipe

一個錯誤,也許?

感謝大家的建議和意見!

乾杯,

傑夫

0

原始文檔的例子並不提供設定輸入值,這裏使用的OnClose設定輸入值的例子。請檢查jsfiddle.net/ray202/XdMkQ/