亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuery .val()vs .attr(“value”)

jQuery .val()vs .attr(“value”)

函數式編程 2019-08-02 16:48:15
jQuery .val()vs .attr(“value”)我原以為這兩個是相同的,但它們似乎不是。我一直習慣使用$obj.attr("value")表單字段,但在我正在構建的頁面上,$obj.attr("value")不會返回我在字段中輸入的文本。但是,$obj.val()確實如此。在不同的頁面我已經建立,雙方$obj.attr("value")并$obj.val()返回在表單字段中輸入的文本。什么可以解釋$obj.attr("value")在一個案例中按預期工作但在另一個案例中沒有?使用jQuery設置和檢索表單字段值的正確方法是什么?
查看完整描述

3 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

對象屬性和對象屬性之間存在很大差異

有關一些差異,請參閱此問題(及其答案):。prop()vs .attr()

要點是.attr(...)只在開始時獲取對象值(創建html時)。val()獲取對象的屬性值可以多次更改。


查看完整回答
反對 回復 2019-08-02
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

從jQuery 1.6開始,attr()將返回一個屬性的原始值(標記本身中的那個)。你需要使用prop()來獲取當前值:

var currentValue = $obj.prop("value");

但是,使用val()并不總是相同的。例如,<select>元素的值實際上是其所選選項的值。val()考慮到這一點,但prop()沒有。因此,val()優選。


查看完整回答
反對 回復 2019-08-02
?
森林海

TA貢獻2011條經驗 獲得超2個贊

僅供將來參考,我提供了一個很好的例子,可以幫助我們解決疑問:

請嘗試以下方法。在這個例子中,我將創建一個文件選擇器,可用于選擇文件,然后我將嘗試檢索我選擇的文件的名稱: HTML代碼如下

<html>
    <body>
        <form action="#" method="post">
            <input id ="myfile" type="file"/>
        </form>
        <script type="text/javascript" src="jquery.js"> </script>
        <script type="text/javascript" src="code.js"> </script>
    </body></html>

code.js文件包含以下jQuery代碼。嘗試逐個使用兩個jQuery代碼片段并查看輸出。

帶attr的jQuery代碼('value'):

$('#myfile').change(function(){
    alert($(this).attr('value'));
    $('#mybutton').removeAttr('disabled');});

帶val()的jQuery代碼:

$('#myfile').change(function(){
    alert($(this).val());
    $('#mybutton').removeAttr('disabled');});

輸出:

帶有attr('value')的jQuery代碼的輸出將是'undefined'。帶有val()的jQuery代碼輸出將是您選擇的文件名。

說明:現在您可以輕松理解最佳答案想要表達的內容。帶有attr('value')的jQuery代碼的輸出將是'undefined',因為最初沒有選擇文件,所以值是未定義的。最好使用val(),因為它獲取當前值。

為了了解返回未定義值的原因,請在HTML中嘗試此代碼,您將看到attr。('value')始終返回'test',因為該值為'test',之前未定義。

<input id ="myfile" type="file" value='test'/>

我希望它對你有用。


查看完整回答
反對 回復 2019-08-02
  • 3 回答
  • 0 關注
  • 446 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號