javascript - 表单事件 'actioncomplete' 未触发

标签 javascript forms events extjs extjs3

我在 3 个事件上签署了表单,但事件“actioncomplete”未触发。另外两个事件执行完毕,执行成功回调。

if(obj instanceof Ext.form.BasicForm){
    var before='beforeaction';
    var complete='actioncomplete';
    var error='actionfailed';
}
obj.addListener( before, 
        function(o,e) {
                    this.changeSysState(lang[msg_id].loading,'loading','load_N_'+this.load_id);
                    }, this);
obj.addListener( complete, 
        function(o,e) {
                    this.showStatus(lang[msg_id].complete,'complete','load_N_'+this.load_id);
obj.addListener( error, 
        function(o,e) {
                    this.changeSysState(lang[msg_id].error,'error','load_N_'+this.load_id);
                    }, this);

我的表格

var changePanel = new Ext.form.FormPanel({
        labelWidth     : 132,
        layout         : 'form',
        border         : false,
        defaults:{allowBlank:false,width:165},
        url            : '/xstore/xstore_change_pass.php',
        items : [ /*some fields*/ ]
});

提交通话

var form = changePanel.getForm();
form.submit({
              success: function(r,o) {
                  winPass.destroy();
              }
           });

服务器返回

{"success":true}

使用ExtJs 3.4

最佳答案

有了这个响应,actioncomplete 应该被触发。您应该寻找原因。我发现您的代码存在一些问题,可能会导致此行为:

  • 您将 beforecompleteerror 声明为局部变量,并且在范围之外使用它们;这可能是一个问题;使用它来代替:

    if(obj instanceof Ext.form.BasicForm){
        var before='beforeaction';
        var complete='actioncomplete';
        var error='actionfailed';
    
        obj.addListener( before, function(o,e) {
            this.changeSysState(lang[msg_id].loading,'loading','load_N_'+this.load_id);
        }, this);
        obj.addListener( complete, function(o,e) {
            this.showStatus(lang[msg_id].complete,'complete','load_N_'+this.load_id);
        }, this);
        obj.addListener( error, function(o,e) {
            this.changeSysState(lang[msg_id].error,'error','load_N_'+this.load_id);
        }, this);
    }
    
  • 你在成功回调中销毁了一些东西;此 success 回调在 actioncomplete 之前触发,因此如果它也破坏了表单,则可能是另一个问题

如果这些都没有帮助,请检查开发人员工具中的服务器响应。可能会返回一些错误代码,这也可能是原因。

Here is fiddle您可以在其中看到第二个问题(actioncomplete 在销毁表单后未触发)。

关于javascript - 表单事件 'actioncomplete' 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20063849/

相关文章:

javascript - 从文本框获取值 - Android WebView 和 JavascriptInterface 问题

javascript - 单击和链接时的 jQuery 事件

javascript - 如何检查javascript中字符串中下一个字符的存在

Javascript 将选择器的文本内容分配给表单输入值

javascript - post done 函数中的 jQuery post

javascript - 是否有将 'intentionally generic' String 或 Array JavaScript 方法传输到其他对象的首选方法?

ruby-on-rails - 如何通过表单(使用acts_as_taggable_on)和Rails 3输入标签

javascript - 在窗口单击事件中访问元素及其子/后代

javascript - 在 Node.js 中,从委托(delegate)分配的事件中检查父级的子级名称或选择器

java - Spring MVC 3 validator 不显示错误消息