2012-07-27 165 views
3

我正在嘗試更改此禁用輸入的值。我想也許它被禁用的事實是問題,所以我手動刪除了禁用的屬性(如果你想知道爲什麼它不再被屏蔽截圖)。請參見下面的圖片:爲什麼我不能使用.val()更改此輸入的值?

enter image description here

從什麼控制檯返回它似乎是正確的選擇輸入,但即使啓用了輸入的輸入值保持空白。我究竟做錯了什麼?

+0

什麼是長選擇器?你可以這樣做:'$('。add-btn:first')。next()。find('input.product')。val(...)' – elclanrs 2012-07-27 02:28:53

+0

感謝您的圖像,但請包括選擇器也作爲文本 - 使測試和改進代碼變得更加容易。 – 2012-07-27 04:37:43

回答

7

我可以告訴你,我有simmilar的問題,並通過使用jQuery的ATTR方法得到角落找尋他們。它可以將任意HTML屬性設置爲任何你想要的。查看更多這裏:http://api.jquery.com/attr/

+1

+1我不知道爲什麼,但'attr'在這裏'val'和'prop'均失敗。這麼奇怪。 – Muhd 2012-07-27 18:53:55

+0

這不是100%,但我認爲這與jQuery選擇器如何返回元素有關。當你有可能返回多個元素時,我發現'.val'往往失敗的頻率往往不是。 – dykeag 2012-07-27 20:23:27

+0

一個工作示例除了提供'attr'鏈接之外還有幫助。儘管謝謝! – 2015-08-31 09:33:33

0

我認爲你正在尋找的.prop()代替.val()

+0

我測試過,沒有什麼區別。 '.val()'應該在這裏工作。 – Muhd 2012-07-27 18:36:03

0

不確定頁面的其餘部分是什麼樣子,但我可以看到你嵌套表 - 可能會導致混淆和意外的結果,尤其是對於隱藏的嵌套表。你打算在用戶點擊add-btn時顯示隱藏的表格嗎?如果是這樣,爲什麼不通過在點擊事件中查找文本按鈕,相對於單擊的按鈕?

$(".add-btn").click(function(evt){ 
    var product = getProductNameSomehow(); // Up to you 

    var newContainer = $(this).siblings("table").find(".new-row-html"); 
    newContainer.find("input.product").val(product); 

    evt.preventDefault(); 
    return false; 
}); 

您可以使用$(...).on("click", ...)來改進和推廣此示例偵聽器。 .a-btn可能會更好,因爲<button type="button">Add</button>,也許styled as a link,如果這是你想要的,所以你不必擔心停止點擊事件。

相關問題