如何通过 JavaScript 重置(清除)表单?

IT技术 javascript jquery
2021-02-09 06:15:00

我试过了,$("#client.frm").reset();但它不起作用。那么如何通过 jQuery 重置表单?

6个回答

form.reset() 是一种 DOM 元素方法(不是 jQuery 对象上的方法),因此您需要:

$("#client.frm")[0].reset();
//faster version:
$("#client")[0].reset();

或者没有 jQuery:

document.getElementById("client").reset();

注意:如果表单包含任何具有属性的字段,则 reset() 函数不起作用:

name='reset'
我收到下一个错误:TypeError: document.getElementById(...).reset is not a function[了解更多]。我使用 FormValidate 插件作为表单。它的 resetForm 也不会重置表单 =( 有什么建议吗?
2021-03-16 06:15:00
欧根,在这里,就像印第安纳琼斯和最后的十字军东征一样,你必须实现信仰的飞跃。如果您调用 document.getElementById('myform').reset() 它实际上会清除表单,即使该方法似乎不存在。典型的 M$ 混淆。
2021-04-05 06:15:00
我的大脑刚刚扩展,谢谢:“jQuery 对象是一个类似数组的包装器,围绕一个或多个 DOM 元素。要获得对实际 DOM 元素(而不是 jQuery 对象)的引用,您有两个选择。第一个(和最快) 方法是使用数组表示法: $( "#foo" )[ 0 ]; // 等价于 document.getElementById( "foo" ) 第二种方法是使用 .get() 函数: $( "#foo" " ).get( 0 ); // 与上面相同,只是速度更慢。" learn.jquery.com/using-jquery-core/faq/...
2021-04-10 06:15:00

你可以简单地做:

$("#client.frm").trigger('reset')

aTrigger带我到新世界
2021-03-26 06:15:00

纯JS解决方案如下:

function clearForm(myFormElement) {

  var elements = myFormElement.elements;

  myFormElement.reset();

  for(i=0; i<elements.length; i++) {

  field_type = elements[i].type.toLowerCase();

  switch(field_type) {

    case "text":
    case "password":
    case "textarea":
          case "hidden":

      elements[i].value = "";
      break;

    case "radio":
    case "checkbox":
        if (elements[i].checked) {
          elements[i].checked = false;
      }
      break;

    case "select-one":
    case "select-multi":
                elements[i].selectedIndex = -1;
      break;

    default:
      break;
  }
    }
}
此解决方案现在不起作用(2016 年)。当表单具有文本、密码和文本区域输入的默认值时,您应该使用 elements[i].defaultValue="" 而不是 elements[i].value=""。
2021-03-22 06:15:00
@安德鲁:这取决于你想要什么。如果您只想将表单重置为defaultValues,您可以调用reset()表单对象。这里的代码是清除表单,而不是重置它。
2021-04-01 06:15:00
这是 jQuery 插件解决方案,应该大致等效。stackoverflow.com/a/24496012/1766230(我用了你的selectedIndex = -1伎俩。)
2021-04-03 06:15:00
var field_type = elements[i].type.toLowerCase();
2021-04-06 06:15:00
不错的功能。我只需要在第一个案例中添加“数字”类型。
2021-04-11 06:15:00

请注意,form.reset()如果表单中的某些输入标签具有属性,则该功能将不起作用name='reset'

我终其一生都无法弄清楚为什么它行不通。然后我用来重置的按钮已id="reset"更改为id="rst"并且一切正常。
2021-04-02 06:15:00

.reset()方法没有清除默认值和复选框字段,还有更多问题。

为了完全重置检查以下链接 -

http://www.javascript-coder.com/javascript-form/javascript-reset-form.htm