2011-08-15 20 views
0

我有以下的HTML如何將按鈕的名稱設置爲輸入文本的值?

<tr class="editorRow"> 
    <td class="emailRow"> 
     <input id="EmailSuccessList_0" 
      name="EmailSuccessList[0]" 
      type="text" value="[email protected]"> 
    </td> 
    <td> 
     <button type="button" href="#" 
       class="deleteEmailRow button sexybutton " 
       name="[email protected]">delete</button> 
    </td> 
</tr> 

我有以下的jQuery的(whcih作品),並需要一些幫助選擇和/或方法來訪問/修改用戶輸入的button庫的名稱。這對我來說似乎很笨拙。

$('.emailRow input').live('keyup', function (e) { 

     var target = this; 
     var currentVal = $(this).val(); 
     $(target).parent().parent().find('button').attr('name', currentVal) 
}); 
+0

你究竟想要做什麼?爲什麼要將刪除按鈕更改爲他們鍵入的電子郵件地址?你如何發佈這個值刪除? – hunter

+0

@hunter - 此標記是用戶可以編輯(添加/更新/刪除)的電子郵件地址表/列表的一部分。所以確實有這樣一種用法:1)刪除已添加錯誤的內容或2)刪除已有項目。關於按鈕的名稱部分,我有一個模式確認框,當刪除提示確認。該框的消息是使用被點擊的按鈕的名稱部分創建的。 – Ahmad

+0

從我可以告訴你沒有理由讓你的按鈕名稱屬性與文本框中的內容同步......這是一個簡單的jQuery選擇器來獲取它。我會添加一個答案。 – hunter

回答

1

這是我想出了一些後jQuery的API搜索迄今爲止最好的..

$(target).closest('tr').find('button').attr('name', currentVal) 
+0

鑑於你的標記,這可能是你會得到的好。 – hunter

0
$('#deleteEmailRow').attr('name', currentVal); 

我想你可以在技術上甚至取代currentVal這樣的:

$('#deleteEmailRow').attr('name', $(this).val()); 
+0

我的錯誤,'deleteEmailRow'不應該是一個Id – Ahmad

+0

@Ahmad哦 - 很好的表和沒有'id'屬性,我做過的唯一方法是你的「笨重」的方式;)我試圖合併id的對於一切 –

0

這個HTML是由某個引擎生成的嗎?像asp,asp.net,asp.net mvc或類似的東西在Java或其他平臺(我是.net小子:))?如果是這樣,您可以使用與生成輸入ID相同的方式生成按鈕上的有意義的ID。之後,您可以輕鬆地從輸入的按鍵處理程序中引用按鈕。

+0

是的 - 標記是從Asp.Net Razor引擎生成的,但是,我的問題並不在於將事件綁定到按鈕 - 它與插入到父表中的新行項位於同一位置。在加載頁面時,名稱元素會填充現有項目的名稱,但是當新項目添加到表格時,該按鈕的名稱需要更新 - 這是我的問題域。 – Ahmad

1

,如果你有一個動態生成的表,你可以使用委託:

$("table").delegate(".editorRow button").click(function(){ 

或只是一個普通的選擇,如果

$(".editorRow button").click(function(){ 

但每次無論哪種方式,你可以找到的電子郵件容易

var email = $(this).closest("tr").find("input:text").val(); 
    // show your dialog 
}); 

我想不出你需要將按鈕名稱與文本框的值同步的原因,因爲你已經擁有它並且可以簡單地找到它。

相關問題