JQuery - 表单重置 - 排除“选择”框

时间:2010-01-04 23:08:19

标签: javascript jquery forms reset

所有

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

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

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

由于

4 个答案:

答案 0 :(得分:10)

致每个人......

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

它重置为初始值..(存储在value属性中,或选择选项等。)

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

  1. 获取所有<select>元素
  2. 获取他们当前选择的值
  3. 按照您目前的方式重置表单
  4. 重新设置所选的
  5. 示例:

    <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>
    

答案 1 :(得分:6)

这不是jQuery,它是原生的javascript。 [0]显示实际的DOM元素,因此它与:

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

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

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

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

答案 2 :(得分:0)

您可以通过将值设置为空字符串并使用David的答案(或此more complete one)重置复选框来进行虚假重置。您还可以在重置表单之前尝试存储每个select元素的值,然后在以下值之后恢复值:

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')); 
});

答案 3 :(得分:0)

无论出于何种原因,David的正确回答错误都是我的Google Chrome js。它说:

未捕获TypeError:对象#的属性'重置'不是函数

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

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

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

  • 点击链接:
  • ,在重置按钮上启动JQuery“点击”事件

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