使用 Jquery 重置表单
Reset a form with Jquery
我正在尝试在使用 Java 和 Tapestry 开发的 Web 应用程序中使用 Jquery 重置表单。问题是 Tapestry 没有提供任何一种重置表单的方法,所以我需要为它创建一个 JS 模块。
我的应用程序中有大约 4-5 个不同 ID 的表单,所以我尝试了这个:
define(["jquery"], function($) {
return function() {
$("form").on("submit", function() {
if (!$("form-group").hasClass("has-errors") && !$("div").hasClass("alert")){
$("form").reset();
}
});
}
})
这是我第一次使用 JQuery,所以它不起作用。我想要做的是在表单的提交按钮被点击时设置一个回调。
这是我在表单中的按钮声明:
<div class="col-md-offset-5 col-md-3"><button class="btn btn-block btn-primary" type="submit"><span class="glyphicon glyphicon-plus"></span> Add
我每页只有一张表格。我认为这很简单,但我无法让它工作。任何人都可以给我一些帮助吗?谢谢
.reset()
方法不是 jQuery 方法,这就是它不能与 jQuery 对象一起使用的原因。但是,您可以引用 jQuery 对象中的 DOM 节点,然后在其上使用本机 JS 方法,即:$("form")[0].reset();
.
define(["jquery"], function($) {
return function() {
$("form").on("submit", function() {
if (!$("form-group").hasClass("has-errors") && !$("div").hasClass("alert")){
$("form")[0].reset();
}
});
}
})
但是,我通常认为不需要表单重置按钮,事实上,detrimental to user experience。对于大多数(我想说是 99.9%)的用例,当用户开始在表单中输入时,他们并没有完全擦除数据的意图,因此误点击重置按钮时(尤其是如果操作未通过 UI 设计明确),将删除用户的输入,这让他们很沮丧(并且没有 "undo" 追索权)。
reset 函数(仍然)在 jQuery
中不存在。然而,有几种方法可以实现表单重置。例如,下面的代码循环遍历表单的每个元素并调用 DOM reset
JavaScript 方法。
jQuery('#form').each(function(){
this.reset();
});
更简单的方法是执行以下操作:
jQuery("#form").reset();
在这种情况下,您应该像这样实现自己的 reset
方法:
jQuery.fn.reset = function () {
jQuery(this).each(function() {
this.reset();
});
}
另一种实现您自己的 reset
表单方法的方法是:
jQuery.fn.reset = function(fn) {
return fn ? this.bind("reset", fn) : this.trigger("reset");
};
这将允许您将代码附加到 reset
函数:
jQuery("#form").reset(function(){
/* some other code */
});
您可以(仍然推荐这样做)使用类型为 reset
的简单 HTML 输入 - 即使在具有 JavaScript 禁用。
jQuery (2021) 最新版本的更新答案。
$("#myForm").trigger("reset");
或者只是 JS
document.getElementById("myForm").reset();
我正在尝试在使用 Java 和 Tapestry 开发的 Web 应用程序中使用 Jquery 重置表单。问题是 Tapestry 没有提供任何一种重置表单的方法,所以我需要为它创建一个 JS 模块。
我的应用程序中有大约 4-5 个不同 ID 的表单,所以我尝试了这个:
define(["jquery"], function($) {
return function() {
$("form").on("submit", function() {
if (!$("form-group").hasClass("has-errors") && !$("div").hasClass("alert")){
$("form").reset();
}
});
}
})
这是我第一次使用 JQuery,所以它不起作用。我想要做的是在表单的提交按钮被点击时设置一个回调。 这是我在表单中的按钮声明:
<div class="col-md-offset-5 col-md-3"><button class="btn btn-block btn-primary" type="submit"><span class="glyphicon glyphicon-plus"></span> Add
我每页只有一张表格。我认为这很简单,但我无法让它工作。任何人都可以给我一些帮助吗?谢谢
.reset()
方法不是 jQuery 方法,这就是它不能与 jQuery 对象一起使用的原因。但是,您可以引用 jQuery 对象中的 DOM 节点,然后在其上使用本机 JS 方法,即:$("form")[0].reset();
.
define(["jquery"], function($) {
return function() {
$("form").on("submit", function() {
if (!$("form-group").hasClass("has-errors") && !$("div").hasClass("alert")){
$("form")[0].reset();
}
});
}
})
但是,我通常认为不需要表单重置按钮,事实上,detrimental to user experience。对于大多数(我想说是 99.9%)的用例,当用户开始在表单中输入时,他们并没有完全擦除数据的意图,因此误点击重置按钮时(尤其是如果操作未通过 UI 设计明确),将删除用户的输入,这让他们很沮丧(并且没有 "undo" 追索权)。
reset 函数(仍然)在 jQuery
中不存在。然而,有几种方法可以实现表单重置。例如,下面的代码循环遍历表单的每个元素并调用 DOM reset
JavaScript 方法。
jQuery('#form').each(function(){
this.reset();
});
更简单的方法是执行以下操作:
jQuery("#form").reset();
在这种情况下,您应该像这样实现自己的 reset
方法:
jQuery.fn.reset = function () {
jQuery(this).each(function() {
this.reset();
});
}
另一种实现您自己的 reset
表单方法的方法是:
jQuery.fn.reset = function(fn) {
return fn ? this.bind("reset", fn) : this.trigger("reset");
};
这将允许您将代码附加到 reset
函数:
jQuery("#form").reset(function(){
/* some other code */
});
您可以(仍然推荐这样做)使用类型为 reset
的简单 HTML 输入 - 即使在具有 JavaScript 禁用。
jQuery (2021) 最新版本的更新答案。
$("#myForm").trigger("reset");
或者只是 JS
document.getElementById("myForm").reset();