我尝试重置html表单时出错

时间:2014-08-06 01:00:59

标签: javascript jquery jquery-forms-plugin

在我目前的春季项目中,提交表单后,我需要重置它。我用这个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>中打开的表单)。

2 个答案:

答案 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();
    });
});

按照此回答的说明:https://stackoverflow.com/a/25173296/2692962