5

HTMLテーブルの列にチェックボックスがあります。チェックまたはチェックを外すと、同じ行の次の列のテキスト領域にテキストを表示/削除する必要があります。
私は次のことをしました:

$(this).parent().parent().find('textarea').text = 'some text' 

そしてまた

$(this).parent().parent().find('textarea').val = 'some text' 

しかし、それは機能しません。

html は次のようになります。

<tr>
    <td>
        <input type="checkbox" />
    </td>
    <td>
        <textarea>
    </td>
</tr>

チェックしたチェックボックスと同じtrのテキストエリアを取得したい

アップデート

使用する必要があることがわかりました.val("some text")が、最初の行のチェックボックスをクリックした場合にのみ関数が呼び出されるようになりました。残りのためではない

4

7 に答える 7

18

問題は、要素を見つける方法ではなく、値を設定しようとしている方法にあります

これを試して

$(this).closest('tr').find('textarea').val("some text");

詳しくはこちらをご覧ください。val()

アップデート

要素IDは一意でなければならないため、同じ要素を再利用することはできません。すべてのチェックボックスに一意の ID、つまり「chkOne」、「chkTwo」などを付けます。次に、この機能を実行するすべてのチェックボックスでクラスを使用します。すなわちclass="chkSelection"。次に、jQuery を次のように変更します。

$('.chkSelection').change(function() {
   if($(this).is(':checked')){
      $(this).closest('tr').find('textarea:first').text('Some text here');
   }
});

このようにして、「chkSelection」のクラスを持つすべてのチェックボックスが変更されると、次のテキストエリアを見つけてテキストを設定する機能が実行されます。

于 2013-08-23T08:20:30.417 に答える
1

このコードを試してください

$("table input[type=checkbox]").change(function(){
  // Your code.
});
于 2013-08-23T08:28:54.010 に答える
1

チェックボックスがチェックされているかどうかを確認するには、チェックattr('checked')..されているすべてのチェックボックスの値を取得してみてください。'input[type="checkbox"]:checked').val()

于 2013-08-23T08:49:16.573 に答える
1

すべてのチェックボックスとテキストエリアに汎用クラスを与えます...チェックボックスの .change() 関数で、これを使用してみてください: (テキストエリアのクラスがテキストエリアであることを考慮してください)

$(this).parent().find('.textarea').html("Your text here");
于 2013-08-23T08:24:17.663 に答える
0

ボックスをオン/オフしてテキストのオンとオフを切り替えられるようにしたい場合は、次のようにします。

$("input[type=checkbox]").change(function() {
    $(this).filter(":checked").parent().next().text('Text!");
    $(this).not(":checked").parent().next().text('');
})

これにより、ページ上のチェックボックスへの変更がリッスンされます。チェックボックスが変更されると、チェックボックスの親の兄弟 (<td>チェックボックスを囲む要素の次の要素) が選択され、そのテキストが 'Text!' に設定されます。ボックスがチェックされている場合は 、ボックスがチェックされていない場合は空の文字列。

テキストのオン/オフ機能を除けば、このメソッドを使用する利点は、機能するために CSS クラス/ID を割り当てる必要がないことです。

于 2013-08-23T08:52:59.100 に答える