那些年我们踩过的坑之表单reset

开发者往往是在一个又一个的坑中成长起来的,自学的开发者尤其如此,刚刚填完一个坑,转身又掉进另一个坑。有些坑很容易就跳出来了,也有些坑能整了一天都没头绪,第二天早上一来发现后面就有一架通往坑外的梯子,坑爹啊,问题原来这么简单!

我今天就踩了一个比较坑的坑,好在花了几分钟就跳出来了。事情是这样的:

今天在做一个新增自定义假期的功能,用到了表单。页面上有个新增按钮,点击弹出一个层,里面就是表单,用的是ajax提交。当用户点击取消时(顺便吐槽一下,保存和取消按钮设计得实在是太丑了),清空表单数据,弹出层消失;当用户点击保存时,确认保存成功后,弹出层消失,清空表单数据。于是我把取消按钮做为reset按钮,大概代码是这样的:

<form method="post" name="addHoliday" id="addHolidayForm" >  // ……
    <input type="submit" name="saveHoliday" value="保存" />
    <input type="reset" name="reset" value="取消" />
</form>

当用户点击新增按钮时,将上一次新增时填的数据清空,表单重置

$("#addHolidayForm")[0].reset();

这个时候浏览器报错了:

not a function ???

怎么会?难道是dom没选中?于是我alert出$("#addHolidayForm").attr("name"),得到“addHoliday”,dom选中了,可是问题出在哪?为了找出原因,我又用原生js试了一次

document.addHoliday.reset();

一样报错:TypeError: document.addHoliday.reset is not a function

于是我开始怀疑人生了。。。

于是我开始删除表单代码看到底是哪一行出了问题,很傻的办法。首先我删了保存和取消按钮,点击新增,表单重置成功了。。。

仔细一看,发现取消按钮的name值为reset,而表单重置方法也是reset,表单可以通过form.name来获取对应的表单元素,于是问题来了:学挖掘机……额,于是问题出来了,很明显,从上面的结果可以看出来,document.addHoliday.reset得到的是name值为reset的input元素而非reset方法,自然就not a function。

by:王美建form:http://www.cnblogs.com/wangmeijian/

时间: 2024-08-24 20:46:32

那些年我们踩过的坑之表单reset的相关文章

form表单reset重置按钮

如果ajax提交完数据,后想清空表单内容 ,以前都是用这个方法$("#id").val(""); 一个一个清空的,其实可以在form表单中加个隐藏的<input type="reset"  style="display:none/>的重置按钮,ajax提交后调用下 $("input[type=reset]").trigger("click"); 就可以把输入框的值重置为默认值了(注意r

那些年我们踩过的坑之ACE篇

最近做一个视频存储服务器.通信模块有几个选择:自己封装IOCP,libevent boost::aio ,ACE. 最终还是选择了大名鼎鼎的ACE.结果就是噩梦从此开始了. ACE主要分为3层:OS适配层,wrapper facde层,框架层. OS适配层.封装了藏用的操作系统函数. wrapper facede层,封装了很多类,使用起来更加方便. 框架层.集成了各个wrpper facade类,提供半完成品应用. 今天就说说使用OS适配层的函数遇到的坑吧.哥哥使用ACE_OS::fopen 打

那些年我们踩过的坑之TIME_WAIT调优

一.写在前面 相信很多人都遇到过服务器出现大量TIME_WAIT的情况,大多数的解决办法是sysctl修改如下参数 net.ipv4.tcp_tw_recycle = 1   #快速回收 TIME_WAIT net.ipv4.tcp_tw_reuse = 1    #reuse TIME_WAIT net.ipv4.tcp_timestamps = 1  #上述两项生效的前提是TCP连接两端都要启用TCP时间戳 过一会发现TIME_WAIT数量直线下降后,服务貌似也没出问题,ok问题解决!其实不

Android之Rsa加密那些年我们踩过的坑

前言: 最近无意中和同事交流数据安全传输的问题,想起自己曾经使用过的Rsa非对称加密算法,闲下来总结一下. 什么是Rsa加密? RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥.RSA是第一个既能用于数据加密也能用于数字签名的算法. RSA算法原理如下: 1.随机选择两个大质数p和q,p不等于q,计算N=pq: 2.选择一个大于1小于N的自然数e,e必须与(p-1)(q-1)互素. 3.用公式计算出d:d×e = 1 (mod (p-1)(q-1)) .4.销毁p和q. 最终得到的N和e

那些年我们踩过的坑-NSTimer

昨天下午工作的时候遇见一个这样的需求,网络请求失败后把请求数据保存到本地,并自动重发3次,时间间隔是10秒,如果3次后还失败的话,下一次启动这个接口的时候,把新数据和保存在本地的数据都要发送,刚开始以为没多少难度,不就是网络请求发送数据嘛,首先脑子里的第一反应就是用定时器,初始化定时器,然后触发相应的方法,设置请求的次数标志,超过3次停止定时器.事实却证明我还没有理解定时器...... 由于是老接口,不能修改,因为产品已经上线,修改会涉及到太多业务,所以只能客户端想办法处理.这样导致的问题就是新

表单reset无法重置hidden的解决方案

方法一:单独处理hidden类型 jQuery("#saveForm").form("reset"); jQuery("input[type='hidden']").val(""); 方法二:使用clear代替reset jQuery("#saveForm").form("clear");

禁止button标签提交form表单,变成普通按钮

button有个type属性,属性值可为button.submit.reset button=普通按钮,直接点击不会提交表单submit=提交按钮,点击后会提交表单reset=表单复位 当button的type属性值为button时,仅做为一个普通的按钮,并不会提交该表单,此时你可以通过js脚本来提交,而form中不需要加onsubmit事件.

Form表单基础知识和常用兼容方法笔记(一)

需要用到的HTML <form id="myForm" name="yourForm" action=""> 姓名:<input type="text" id="textFiled" name="user" value="text"> <p id="box"></p> <input type=&

element-ui Form表单校验小结及踩坑

1.要验证输入只能为数字时 . 如果使用type=“number”样式这边去掉type=number时自带的属性 /* 去除webkit中input的type="number"时出现的上下图标 */ input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: none; } input[type="number"] { -moz-appearance