在我目前的春季项目中,提交表单后,我需要重置它。我用这个javascript / jquery代码做这个:
$('form.form').ajaxForm(function(data) {
$('form.form').each(function(){
this.reset();
});
});
此代码的问题在于某些表单具有内部表单,在弹出窗口中打开(源<div>
放在同一个jsp页面中)。在这种情况下,上面的代码会重置两种形式。
我尝试了其他代码:
$('form.form').ajaxForm(function(data) {
$(this).each(function(){
this.reset();
});
});
但是有了这个,我收到了这个错误:
Uncaught TypeError: Object #<Object> has no method 'reset'
与第一种方式相比,第二种方式有什么问题?我怎么能重置表格呢?
更新
按照answer的说明,我试试这个:
jQuery.fn.reset = function () {
$(this).each (function() { this.reset(); });
};
$('form.form').ajaxForm(function(data) {
$(this).reset();
});
但它仍然发生了同样的事情。
更新2
最后,我尝试了这段代码:
$('form.form').ajaxForm(function(data) {
var nome = $('form.form').attr('id');
if(data == '')
$('#yes').css('display', 'block');
else
$('#not').css('display', 'block');
$('#'+nome).each(function(){
this.reset();
});
});
仅重置主窗体(第一个要打开的窗体)。我想知道是否有一个解决方案来引用最后打开的表单(在jquery-ui对话框<div>
中打开的表单)。
答案 0 :(得分:0)
我已经为这个问题做了一些代码模拟,但是,我仍然不确定我是否在这里正确地得到了问题,你的问题是如何只重置1个表单?在任何地方,我解释错误并重置特定表格
Uncaught TypeError: Object #<Object> has no method 'reset'
此错误命中是因为this
中$(this)
指向ajaxForm范围而不是表单本身,而ajaxForm没有该属性,这就是错误发生的原因< / p>
如果您只想重置第一个表单,例如form1,请尝试仅基于id重置表单
$('#form1').ajaxForm(function(data) {
$('#form1')[0].reset();
});
答案 1 :(得分:0)
我终于找到了解决此问题的方法,使用以下代码:
$('form.form').each(function () {
var form = this;
$(form).ajaxForm(function (data) {
if (data == '') {
$(form).find('#yes').css('display', 'block');
} else {
$(form).find('#not').css('display', 'block');
}
form.reset();
});
});