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

问题描述

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

解决方案

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 = $('<iframe id='+frameId+' name='+frameId+'></iframe>') .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 = $('<input type="hidden" name="' + n + '">').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浏览器下是会弹出新窗口的。
解决方案二:
$.ajax({ url: "test.html", data :[], async : false, });
解决方案三:
window.open(URL,name,features,replace)只有在设置了第三个参数才会打开新的窗口在没指定第三个属性时只会在当前窗口打开新的标签。(在IE中,如果要打开的URL与当前页面URL不属于同一个主域名则打开新窗口;在Chrome中,如果window.open()函数不是被鼠标键盘事件调用的,而是页面直接调用或通过定时器等调用的,则打开新窗口而非标签)既然用到了easyui,那可以使用tabsfunction addTab(title, url){ if ($('#tt').tabs('exists', title)){ $('#tt').tabs('select', title); } else { var content = '<iframe scrolling="auto" frameborder="0" src="'+url+'" style="width:100%;height:100%;"></iframe>'; $('#tt').tabs('add',{ title:title, content:content, closable:true }); } } 在jquery中的ajax方法中可以指定同步请求jquery API中这样描述的:async (default: true)Type: BooleanBy default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success().代码如下:$.ajax({ url: "test.html", data :[],});

时间: 2024-08-04 00:50:05

easyui的form表单能否用同步的方式提交?的相关文章

jquery插件EasyUI中form表单提交实例分享_jquery

之前用AJax给Controller传递参数,然后再调用服务端的方法对数据库进行更改,今天碰到一个新的方法,就是表单的提交,这样可以省去AJax传参. 当表单提交后,我们可以获取表单上控件中的值,然后再调用服务端的方法对数据库进行更改.下面的一张截图是具体的业务需求. 一.要实现的功能:从上面这个表单中,获取控件中的值,然后传递给后台.下面是表单代码. 二.表单代码 <div id="Editwin" class="easyui-window" title=&

在JSP文件中的同一个form表单有多个用来提交表单值的按钮,用户可以通过不同的按钮提交表单,需要调用Action中的不同处理方法,该怎么使用动态方法调用?

问题描述 Action 问题补充:是struts2 怎么修改jsP动态form的action名称呀? 解决方案 function formSubmit(){document.form1.method="post"; var url ="<%=request.getContextPath()%>/hrt/chartSichuan.do?method=recordList"; document.form1.action= url; document.form

java-用easyui做form表单,但不显示出来

问题描述 用easyui做form表单,但不显示出来 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ht

项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)_javascript技巧

第一个项目终于上线了,是一个叫亲青筹的公益众筹平台,微信端,电脑端还有后台界面大部分都是我完成的,几个月过来,感觉收获了很多,觉得要总结一下. 首先想到的是图片上传的问题.在通常表单数据都是ajax上传的情况下,为了上传图片而去使用form表单感觉很蠢.然后那时候也没有想到用jquery form插件. 后台的同事给的方案是用iframe里写一个form表单,然后上传图片之后自动提交表单,他将图片在服务器上的地址以跳转页url的一部分,我再来截取的方式. 方案一:iframe+form表单 <f

使用Ajax方法实现Form表单的提交及注意事项

写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说想要将控制权放在前端,通过js来操作页面的跳转或者数据变化. 一般这种异步的操作,我们都会想到ajax方式,因此在实现了功能后就整理了这篇文章,通过ajax方法实现form表单的提交并进行后续的异步操作. 常见的form表单提交方式 <!DOCTYPE HTML PUBLIC "-//W3C/

Html form 表单提交前验证

可以使用form表单的onsubmit方法,在提交表单之前,对表单或者网页中的数据进行检验. onsubmit指定的方法返回true,则提交数据:返回false不提交数据. 直接看下面的代码: 1 <HTML> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4 </head> 5 <BODY>

EasyUI中实现form表单提交的示例分享

这里给大家分享的是一段使用EasyUI中实现form表单提交的方法的核心代码,小伙伴们根据自己的需求补全form部分吧,希望大家能够喜欢. 代码如下: $('#form').form({ url : 'test/add.do', onSubmit : function() { parent.$.messager.progress({ title : '提示', text : '数据处理中,请稍后....' }); var gridValid = endEdit();// 子表退出编辑验证 if

jQuery EasyUI API 中文文档 - Form表单_jquery

Form 表单 用法 复制代码 代码如下: <form id="ff" method="post"> ... </form> 使 form 成为 ajax 提交的 form . 复制代码 代码如下: $('#ff').form({ url:..., onSubmit: function(){ // 做某些检查 // 返回 false 来阻止提交 }, success:function(data){ alert(data) } }); // 提

easyui-easyUI先提交form表单做条件查询返回的结果加载到datagrid中,应该怎么做?

问题描述 easyUI先提交form表单做条件查询返回的结果加载到datagrid中,应该怎么做? 我是这么写的,但是这样form表单提交不到后台去,不知道怎么做 $('#tt').datagrid({ pageNumber : curr url : $('#bas').val() + '/showUser.action' onLoadSuccess : function() { } onLoadError : function() { $('#tt').datagrid('appendRow'