1

テーブル内に次の構造があり、#tbody_name 内に行と他のテーブルがネストされています。

<tbody id="tbody_name">
    <tr>
        <td>
             <select>
                <option value="" selected="selected">---------</option>
                <option value="3">Something</option>
                <option value="2">Something else</option>
             </select>
        </td>
    </tr>
    <tr>
        <td>
          <input type="radio" value="0" /> Normal<br>
          <input type="radio" value="1" /> Abnormal<br>
        </td>
    <tr>
        <td>
            <table>
                <tr>
                    <td>
                       <input type="text />
                    </td>
                    <td>
                       <input type="checkbox" />
                    </td>
                </tr>
            </table>
       </td>
   </tr>          
</tbody>

私がやろうとしているのは、#tbody_name 内のすべてのフォーム フィールドの値をクリアできる関数を作成することです。

.children と .each を使用しようとしましたが、#tbody_name 内のフォーム フィールドまで煮詰めることができないようです。

どんな助けでも大歓迎です。

ありがとうございました、

JD

4

3 に答える 3

3
$('#tbody_name').find('input').each(function(){
    if ((this.type === 'radio') || (this.type === 'checkbox'))
    {
        this.checked = false;
    }
    else
    {
        this.value = '';
    }
});

$('#tbody_name').find('select').each(function() {
    this.selectedIndex = 0;
});

編集:かなりばかげたバグを処理するためにコードを修正しました。今はうまくいくはずです。

于 2013-01-18T16:36:14.483 に答える
0

これを行う方法はいくつかあります。どちらを使用するかは、コーディング スタイルによって異なります。次のソリューションでは、 prop()jQuery のメソッドを使用します。

$('#tbody_name input[type=radio], #tbody_name [type=checkbox]').each(function() {
   $(this).prop('checked', false); 
});

$('#tbody_name input[type=text]').each(function() {
   $(this).prop('value', ''); 
});

$('#tbody_name select').each(function() {
    $(this).prop('selectedIndex', 0);
});

または、オブジェクトのプロパティを明示的に設定することもできます。この方法はもう少し直接的で読みやすいかもしれません:

$('#tbody_name input[type=radio], #tbody_name [type=checkbox]').each(function() {
   this.checked = false;
});

$('#tbody_name input[type=text]').each(function() {
   this.value = '';
});

$('#tbody_name select').each(function() {
    this.selectedIndex = 0;
});
于 2013-01-18T17:54:39.667 に答える
0

子を見つけるために find メソッドを使用し、親を見つけるために最も近く、次の要素を見つけるために next メソッドを使用して、テーブルを横切ることができます。

$('#tbody_name').find('option:first-child').attr('selected', 'selected').closest('tr').next().next().find('input:text').val('');

または、フォーム フィールド ID を指定して、ID で検索することもできます。

$('#defaultOption').attr('selected', 'selected');
$('#textInput').val('');

これらを関数内に配置し、ボタンから呼び出します。

于 2013-01-18T16:46:18.877 に答える