0

我有一个表单,其中有几个输入字段分布在整个标记中。

我想要做的是删除除输入之外的所有内容。

所以这:

<form>
<table><tr><td>more info here<input type="submit" name="registerForEvent" id="registerForEvent" value="Register Online" class="Button" /></td></tr>
<tr><td>table goes here blah blah....
<table><tr><td></td><td>  test text here:<input type="hidden" name="test"></td></tr></table>
</td></tr>
</table>
</form>

变成这个

<form>
<input type="submit" name="registerForEvent" id="registerForEvent" value="Register Online" class="Button" />
<input type="hidden" name="test">
</form>

我试过

$('form:not(input)').remove(); 

无济于事

http://jsfiddle.net/X5fFC/

4

4 回答 4

2

输入是表单的孩子的孩子,因此删除第一个孩子将删除输入,因为它们本身就是这些孩子的孩子等?

尝试将所有输入移动到表单根级别,然后删除除输入之外的所有内容:

$('input', 'form').appendTo('form');
$('*','form').not('input').remove(); ​

小提琴

于 2012-08-02T13:35:45.373 回答
2

您可以将所有输入存储在一个变量中,然后删除表单中的所有内容。之后,您可以放回输入:

var inputs = $("form input");
$("form").empty().append(inputs);

http://jsfiddle.net/X5fFC/6/

于 2012-08-02T13:36:26.683 回答
2

$('form').html($('form input'));

演示

于 2012-08-02T13:36:53.773 回答
0
 $('form:not(input)').remove(); 

将删除子input元素。你可以试试:

 var input = $('form input');
 $('form').empty().append(input);​
于 2012-08-02T13:36:52.370 回答