网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

慎用jQuery中的submit()方法

今天在做项目的过程中用到了submit()提交表单。

成都创新互联是一家专注于网站设计制作、网站建设与策划设计,齐齐哈尔网站建设哪家好?成都创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:齐齐哈尔等地区。齐齐哈尔做网站价格咨询:18980820575

折腾许久很是郁闷,经过多方资料查询和亲测后,得出结论:

一定要慎用submit()方法

首先,在form表单中一定不要将input中的name或id命名为submit,否则会导致在submit()的失效,例如以下脚本在所有浏览器(IE/FF/CHROME/SAFARI)中都会失效:





Page Title








jquery的官方文档的additional notes中也提到了这一点

https://api.jquery.com/submit/

  • Forms and their child elements should not use input names or ids that conflict with properties of a form, such as submit,length, or method. Name conflicts can cause confusing failures. For a complete list of rules and to check your markup for these problems, see DOMLint.

----------------------

其次,我们要注意到通过form.submit()提交的表单,相对于正常提交表单会遗漏一些信息。

测试以下两个脚本:

脚本1






Page Title













输出结果为:

Array
(
    [text1] => test
    [password1] => school
    [radio1] => test
    [checkbox1] => test
)

脚本2





Page Title












输出结果为:

Array
(
    [test1] => test
    [password1] => school
    [radio1] => test
    [checkbox1] => test
    [submit1] => Edit
)

比较结果:

  1. type为"text"、"password"、"radio"、"checkbox"的input在两种方法中都会正常传递

  2. type为"button"、"reset"的input在两种方法中都不会传递

  3. type为"submit"的input在正常的表单提交中会传递,而在submit()中会丢失

解决方法:

  1. 在submit()前,添加"submit"的值

2.换用以下方法,亲测可用

form.submit(function(){
    submit = true
    //你的业务逻辑
    if(!submit) return false
})

---------------

要说明一点:

网上有部分声音说webkit浏览器(例如chrome)不支持submit()方法,根据我亲身测试新版本的chrome/safari是支持的,可能某些远古版本不支持吧。

最后附上测试所用的浏览器版本:

Chrome: 50.0.2661.102 m

Firfox: 48.0a2

IE:11.0.9600

Safari:windows上的5.1.7 及IOS9.3.1上的Safari


新闻名称:慎用jQuery中的submit()方法
文章源于:http://bjjierui.cn/article/ihjgpe.html

其他资讯