malie0 2014-05-20 09:27
浏览 710
已采纳

easyui的form表单能否用同步的方式提交?

默认是异步的,有没有办法变成同步方式提交。因为碰到一个问题,在表单提交的success里用window.open打开新窗口会跳出新的浏览器窗口而不会变成新Tab页,只有在form表单提交的代码段之外window.open才会变成tab页。另外想请教ajax的success里用window.open打开新窗口会跳出新的浏览器窗口而不会变成新Tab页是什么原因?浏览器是chrome

  • 写回答

3条回答 默认 最新

  • lovejiegirl1 2014-05-20 14:49
    关注

    [code="java"]

    submit: function(jq, options){
    return jq.each(function(){
    var opts = $.extend({},
    $.fn.form.defaults,
    $.data(this, 'form') ? $.data(this, 'form').options : {},
    options||{}
    );
    ajaxSubmit(this, opts);
    });
    },

    function ajaxSubmit(target, options){
    options = options || {};

    var param = {};
    if (options.onSubmit){
    if (options.onSubmit.call(target, param) == false) {
    return;
    }
    }

    var form = $(target);
    if (options.url){
    form.attr('action', options.url);
    }
    var frameId = 'easyui_frame_' + (new Date().getTime());
    var frame = $('')
    .attr('src', window.ActiveXObject ? 'javascript:false' : 'about:blank')
    .css({
    position:'absolute',
    top:-1000,
    left:-1000
    });
    var t = form.attr('target'), a = form.attr('action');
    form.attr('target', frameId);

    var paramFields = $();
    try {
    frame.appendTo('body');
    frame.bind('load', cb);
    for(var n in param){
    var f = $('').val(param[n]).appendTo(form);
    paramFields = paramFields.add(f);
    }
    checkState();
    form[0].submit();
    } finally {
    form.attr('action', a);
    t ? form.attr('target', t) : form.removeAttr('target');
    paramFields.remove();
    }

    在cb函数中使用了setTimeout,如果你在success方法中使用window.open ,是页面直接调用或通过定时器等调用的,没有通过鼠标键盘事件,在google浏览器下是会弹出新窗口的。
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置