2011-08-15 11 views
0

私は、次のjQuery(whcihの作品を)持っていると、ユーザの入力にbuttonベースの名前を変更/アクセスするためのセレクタおよび/または方法でいくつかの助けを必要とし、次の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> 

を持っています。それは私にとって非常にclunkyようです。

$('.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)既存のアイテムを削除するための使用が間違いありません。 wrtボタンの名前の部分に、私は確認時に確認のためのプロンプトをモーダル確認ボックスがあります。ボックスのメッセージは、クリックされたボタンの名前部分を使用して作成されます。 – 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'属性なし、私がこれまで行った唯一の方法はあなたの "clunky"な方法です;)私はIDのすべてのため –

0

このHTMLはエンジンによって生成されますか? asp、asp.net、asp.net mvcまたはJavaまたは他のプラットフォーム(私はネット男:)のような何かのような)?そうであれば、入力用のIDを生成するのと同じ方法で、ボタンに意味のあるIDを生成させることができます。その後、入力のキーアップハンドラからボタンを簡単に参照することができます。あなたが動的に構築されたテーブルを持っている場合

+0

はい - マークアップはAsp.Net Razorエンジンから生成されますが、私の問題はイベントをボタンにバインドすることにありません。親テーブルに挿入される新しい行項目があります。ページロード時に、 'name'要素には既存の項目の名前が設定されますが、新しい項目が表に追加されると、ボタンの名前を更新する必要があります。これが私の問題のドメインです。 – Ahmad

1

あなたは、デリゲートを使用することができます:

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

が、それぞれいずれかの方法で電子メールを見つけることができるかどうか

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

または普通のセレクタを簡単に

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

ボタンの名前をテキストボックスの値と同期させる必要がある理由の1つは、あなたが既に持っていて簡単に見つけることができるとは思えません。

関連する問題