jQuery.form resetForm()没有将选择框重置为默认选择

时间:2010-02-25 14:44:47

标签: jquery

我有一个清除span id中所有元素的函数。 clearForm()有效,但resetForm()没有。

`<script type="text/JavaScript">`  
`    $(function hideMe() { ` 
`        for(i=0;i<arguments.length;i++) {`  
`        $("#"+arguments[i]).clearForm().fadeOut();`  
`    }`  
`    });`  
`</script>`  
`<html>`  
`...<td><input type="radio" name="third_party" id="third_partyNo" value="No" onClick="hideMe('party_integ');" />No</td>`  
'...'  
`<span id="party_integ" style="display:none">`  
`<table>`  
`    <tr>`  
` <td width="25%">System Type:</td>`  
` <td width="22%"><select name="system_type" id="system_type" class="style3" onChange="popCat(this.value);">`  
` <option value="" selected="selected">Select one</option>`  
` <option value="first">first</option>`  
` <option value="second">second</option>`  
` <option value="third">third</option>`  
` </select></td>`  
`    </tr>`  
`</table>`  
`</span>` 

3 个答案:

答案 0 :(得分:1)

您的代码存在很多问题。

  1. 您正在以一种在IE以外的浏览器中不起作用的方式声明您的“hideMe”功能,并且它依赖的IE行为无论如何都严重受损。您将该函数设置为jQuery“ready”处理程序,而不是全局函数。您应该做的是将匿名函数绑定到单选按钮的“单击”事件。您可以在“就绪”处理程序中执行此操作。

  2. “clearForm”功能 - 那是什么?在哪里定义?

  3. 如评论中所述,将表放在跨度中是错误的。如果您需要表格的容器,请使用<div>

  4. 要重置表单,<form>元素上有一个原生的“重置”功能。也就是说,页面中没有<form>元素。没有表单元素的输入元素是不正确的,如果没有表单,你将无法进行重置。

答案 1 :(得分:1)

  

$( “#” +参数[I])。clearForm()

clearFormresetForm不同。

resetForm将表单字段设置回页面加载时的值s,即。与value="x"属性中设置的相同。它仅适用于<form>元素(不是您目前拥有的<span>),因为它是JavaScript form.reset()方法的一个基本无意义的包装。

(通过在表单字段上手动设置resetForm返回value,可以重新编写defaultValue来处理非表单,defaultCheckeddefaultSelected clearForm。但这不是它目前正在做的事情。)

另一方面,

<select>将元素内所有输入的值设置为空白,无论它是什么元素。但是,如何删除jQuery.form框的值?它没有任何意义;您不能在单选下拉列表中选择“无选项”,除非它根本不包含任何选项。

else if (tag == 'select') this.selectedIndex = -1; 似乎确实试图“选择没有选项”,但它永远不会奏效。第610行:

-1

您无法将selectedIndex设置为0。您可以尝试更改此代码以将其设置为select-many以选择第一个选项。 (但这对于jQuery.form框来说仍然不够。)

通过快速查看{{1}}代码,我怀疑它并不是非常好。

答案 2 :(得分:0)

尝试这个答案: 我在编码质量方面的第二个Pointy。

stackoverflow answer