8

全部,

我可以使用以下 JQuery 语法重置所有表单元素:

('#myform')[0].reset();

如何修改它以排除“选择框”值的重置?

谢谢

4

4 回答 4

10

给大家..

重置功能不会将所有内容设置为“”(空字符串)

它重置为其初始值..(存储在 value 属性中,或 selected option 等..)

如果你想保持默认的重置功能,那么你应该

  1. 获取所有<select>元素
  2. 获取他们当前选择的值
  3. 像现在一样重置表格
  4. 重新设置选定的

例子:

<script type="text/javascript">
  $(document).ready(
  function(){
   $("#resetbutton").click(
    function(){
     var values = [];
     var selected = $("select").each(
      function(){
       values.push( $(this).val());
       });
     this.form.reset();
     for (i=0;i<selected.length;i++)
      $(selected[i]).val(values[i]);
    });
    }
  );
 </script>
于 2010-01-05T18:37:58.803 回答
6

那不是 jQuery,它是原生 javascript。[0] 带出实际的 DOM 元素,因此它与以下内容相同:

document.getElementById('myform').reset();

reset()是一个内置的浏览器实现,它重置整个表单。如果您需要重置单个表单类型,请尝试以下操作:

$('#myform :text').val('');

您可以在此处查看所有表单选择器:http: //docs.jquery.com/Selectors

于 2010-01-04T23:30:24.750 回答
0

您可以通过将值设置为空字符串并使用大卫的答案(或更完整的答案)重置复选框来进行假重置。您还可以尝试在重置表单之前存储每个选择元素的值,然后在之后恢复值:

var myform = $('#myform');
var selects = $('select', myform);

// Store each current value
selects.each(function() {
    $(this).data('previous', $(this).val()); 
});

myform[0].reset();

// Restore the values
selects.each(function() {
    $(this).val($(this).data('previous')); 
});
于 2010-01-04T23:41:40.153 回答
0

无论出于何种原因,David 的正确回答错误地导致了我的 Google Chrome js。它在说:

未捕获的类型错误:对象# 的属性“重置”不是函数

...所以我决定尝试一个稍微不同的解决方案:

  • 给本机浏览器重置按钮属性“隐藏”并设置“id”:

<input id="resetbutton" type="reset" style="visibility:hidden;" name="reset" value="reset" />

  • 通过单击链接在重置按钮上启动 JQuery“单击”事件:

<a href="#" onclick="$('#resetbutton').click();">Reset</a>

于 2012-06-26T13:52:49.380 回答