2013年6月21日 星期五

jQuery 的 val() 設值問題 (setter)

今天在用 jQuery 的 val() 設定 test_date 這個  text input 元素的值時, 發現此函數會計值, 如果要設定文字進去, 務必左右加上引號, 例如 test_date 是一個日期欄位, 所以從資料庫讀出來時是 2013-06-21 這樣的值, 原先我是這樣設值的 :

$("#test_date").val(2013-06-21);

結果在文字欄位中顯示的是 1986, 因為 val() 把 2013-06-21 看成是兩次減法, 所以 2013 減掉 27 後得 1986, 正確用法是用字串 :

$("#test_date").val("2013-06-21");

專案中的實際例子是從資料庫中讀出 test_date 欄位 :

$test_date=$RS[0]["test_date"];

然後在 heredoc 中把此值放入 val() 中 :

$("#test_date").val("{$test_date}"); //設定初始值 (正確方法)

原先錯誤的方式是 :

$("#test_date").val({$test_date}); //設定初始值 (錯誤方法)

我搞清楚為什麼會是 1986 後, 原先以為只要把 test_date 轉成字串就可以, 於是參考 Jollen's PHP 的 "如何做 PHP 的型別轉換?", 用 (string) 去把 $test_date 轉成字串, 但發現這是沒用的 :

$test_date=(string)$RS[0]["test_date"];

$("#test_date").val({$test_date}); //設定初始值 (錯誤方法)

其實只要像上面說的那樣, 左右用引號括起來就可以了.

沒有留言 :