標籤:jquery升級引起的問題 jquery不能擷取text的值
之前項目中使用的是jquery-1.6.3.js,在這個版本中,如果我們想擷取輸入框的值,可以使用$("input").attr("value")或者是$("input").val(),這2種方式是等價的。
<input type="text" id="speed" />$("#speed").attr("value");$("#speed").val();
最近到了另一個項目組,使用的是jquery-2.1.1.js,結果發現了問題。我使用的是IE10瀏覽器。
<input type="text" id="speed" value="45"/>$("#speed").attr("value");//始終是45
如果text控制項給了預設值,那麼使用attr("value")得到的結果始終是45,不會得到輸入控制項實際輸入的值。
<input type="text" id="speed" />$("#speed").attr("value");//始終是undefined
如果text控制項沒有設定value屬性,那麼使用attr("value")得到的結果始終是undefined。
經過測試,不管是1.6.3版本,還是2.1.1版本,使用val()函數,總是能夠成功擷取輸入框的實際值。
<input type="text" id="speed" value="45"/>$("#speed").val();//能夠得到輸入框的實際值
我又嘗試了1.9.1版本,發現attr("value")和val()的表現跟2.1.1版本是一致的。不知道jquery是從哪兒個版本發生改變的,反正以後大家使用jquery時需要注意這個問題。如果沒有想到版本升級帶來的不相容問題,那麼可能會找不到問題的所在。由此可見版本升級是一件非常有風險的事情,一定要經過充分的驗證,最好能有自動化的驗證用例。如果所有的測試案例都能通過,那麼基本意味著,版本的API功能都是相容的,升級後風險相對來說很小。如果不明白版本發生的改變,就冒然升級,風險很大。
jquery版本升級不相容的問題:$("input").attr("value")功能發生改變