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 中的表单字段。

任何帮助将不胜感激。

谢谢,

京东

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

您可以使用 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 回答
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 回答