摘要:【Tip】hidden在IE中取不到值
今天遇到一件很神奇的事情,但事後想想應該是一件很蠢的事,因為好像在網路上沒有很多人遇過這個問題,結論就是自己的觀念不好...才導致這種蠢事發生,但還是要記錄一下這種蠢事,因為是自己try出解答的,所以紀錄下來以後對自己也是個幫助
在選取表單的時候,我在網頁裡面放了一個hidden,想要紀錄目前使用者是選了哪一筆資料,然後再用$.ajax傳到server做處理,所以我設定值是這樣設定的
$("#btn1").click(function(){
//
$("#hid").text("1");
});
在點擊ID為btn1的button時,就給hidden一個值,而hidden的特性關係所以USER在畫面上會看不到,正當我用得很開心時候,用IE一看,結果竟然發現錯誤?!第一個響起的念頭就是,該不會又是瀏覽器之間又怎麼了吧?正當我又想把過錯推到IE的時候,我突然想到我以前用Gridview的時候也有用hidden呀,那時候取值為什麼就沒有事,所以我決定用IE的內建工具來Debug看看
說到IE內建的Debug工具其實跟firefox的firebug還蠻像的,只是差別IE是內建,火狐則是需要下載附加元件,而IE內建的Debug就在工具→開發者工具,或是直接按快捷鍵shift+F12直接呼叫,至於用法跟firebug一樣大同小異,一樣可以設定中斷點,看看是哪裡出了問題
而就在我逐步的觀察程式碼時,我發現在設定$("#hid").text("1")時左下角就出現驚嘆號的訊息,而在$("#hid").text()取值的時候,就發生錯誤了!所以我就想到.val()這個東西,果然當我一換成下面這樣以後
$("#hid").val("1");
就可以正常的取出和設定了,不管是IE還是火狐,後來我仔細想想,其實Jquery對於細節還是很講究的,雖然感覺text()和val()都是在給值,可是給的值可是不同呀,val()算是設定value的值,text()算是設定真正的文字,例如<div>123</div>中間夾的123,其實官網是講得很清楚的...
The .text() method cannot be used on input elements. For input field text, use the .val() method.
官網說的很清楚了,如果要設定值,請用val(),又多釐清一個觀念了