工作中碰到的js问题(disabled表单元素不能提交到服务器)
今天碰到一个奇葩的问题,asp页面表单提交后,有一个文本框<input type="text" name="phone" id="phone" />在后台获取不了,
这个标签在form表单内,也有name属性,但是在后台就是获取不了这个标签的值,而其他的文本框、复选框都可以获取到,这可就奇怪了!
几经周折,终于找到了原因,原来我在提交表单的时候,name = "phone"这个标签此时在一个javascript事件中被禁用了,即完整的该标签状态为:
<input type="text" name="phone" id="phone" disabled />
从而导致在asp后台不能phone这个参数的值。意思应该是phone标签在客户端被禁用了,表单提交就不会提交到服务器去。
解决办法,是设置该标签为可读:<input type="text" name="phone" id="phone" readonly="readonly" />
这样的话,既保证了标签内的东西不能随便修改,也能够提交到服务器里去
-------------------------------------------------------------------------------
--------------------- 其他js笔记 -----------------------------------------
------------------------------------------------------------------------------
1、图片预加载中,在谷歌浏览器获取图片的宽高为0px,代码如下:
var img = new Image(); img.src=”images/1.jpg”; var width=img.width+20;var height=img.height+75;
这段代码在IE/Firefox浏览器中,是能够获取到img对象的宽度和高度,但是在谷歌浏览器中获取宽高的值为0px。
什么原因?
应该是这段代码,在谷歌浏览器中图片还没加载完,此时获取图片的宽度和高度自然是0px。解决办法,应该写成:
var img = new Image();
img.onload=function(){
var width = img.width+20;
var height = img.height+75;
}
img.src=”images/1.jpg”;
这样后不管在IE/Firefox, 还是在Google浏览器中,都可以获取图片对象的宽高了
2、想实现一个功能,页面有一个div区域,需要做到点击这个div区域外的其他地方,关闭这个div区域。所以需要做到获取鼠标的坐标,然后根据坐标位置和这个div的位置来隐藏:
//监听鼠标点击
document.onmousedown = function (event) {
var xPos, yPos; //鼠标坐标
event = event || window.event;
if (event.pageX) {
xPos = event.pageX;
yPos = event.pageY;
} else {
xPos = event.clientX + document.body.scrollLeft - document.body.clientLeft;
yPos = event.clientY + document.body.scrollTop - document.body.clientTop;
} var tmpObjs = $(".birDetailOn"); //需要隐藏的div块(可能有多个这种div) if (tmpObjs.length > 0) {
var isHidden = true; for (var i = 0; i < tmpObjs.length; i++) {
var obj = tmpObjs[i];
var top = $(obj).offset().top; //该div的距离顶部的位置
var left = $(obj).offset().left; //距离左边的位置
var width = obj.offsetWidth; //该div的宽度
var height = obj.offsetHeight; //该div的高度
//判断鼠标坐标是否在div区域之内(在div区域内,就不隐藏该div)
if (xPos >= left && xPos <= (left + width) && yPos >= top && yPos <= (top + height)) {
isHidden = false;
}
} if (isHidden) $(".birDetailOn").css({ "display": "none" }).removeClass("birDetailOn");
}
}
3、JS中for循环支持break、continue、return关键字,效果和C#一样(break跳出循环,continue跳过当前循环,return方法里循环后所有代码都不在执行);
对于each循环,不支持break和continue关键字,支持return,return就像是for循环里面的continue关键字效果一样,碰到return当前循环的后面代码不再执行,执行下一个循环;
each支持return false,碰到return false就像相当于for循环中break,跳出循环,执行循环外后面的代码!
工作中碰到的js问题(disabled表单元素不能提交到服务器)的更多相关文章
- html 5中的新特性之强化表单元素及属性
之前我们判断用户提交的是否是Email 的时候,往往使用js 进行判断,但在html5中可以有新的方式进行判断而且更简单 <!DOCTYPE html> <html lang=&qu ...
- 前端笔记之React(二)组件内部State&React实战&表单元素的受控
一.组件内部的State 1.1 state state叫状态,是每一个类式组件都有的属性,但函数式组件,没有state. state是一个对象,什么值都可以定义. 在任何类式组件的构造函数中,可以用 ...
- php-- 避免表单的重复提交
用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题.我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交. 1.使用客户端脚本 提 ...
- 通过getElementById来取得Form里的表单元素
<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>湖南易通 ...
- Form表单元素
Form表单元素 action method input: name value type: text password button radio checkbox file submit reset ...
- form表单元素中disabled的元素的值不会提交到服务器
1.表单元素中disabled的元素的值不会提交到服务器,后台获取的值为null <form id="myForm" action="#" method= ...
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
js replace 全局替换 js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <scrip ...
- js动态的往表格中加入表单元素
效果如图: 这里我用的是layui的静态表格,其他框架也是一样的(只要你都表单元素要通过js进行渲染),我的需求是在表单中放了表格的元素,表格中还有表单的元素.表格中的行数据是js动态添加的,正常的添 ...
- ASP.NET MVC异步验证是如何工作的02,异步验证表单元素的创建
在上一篇"ASP.NET MVC异步验证是如何工作的01,jQuery的验证方式.错误信息提示.validate方法的背后"中,了解了jQuery如何验证,如何显示错误信息,本篇要 ...
随机推荐
- Spring定时器,定时执行(quartz)
这个定时器与继承了timertask的定时器不同的是,这个定时器是更强大的,可以指定每分的第n秒,每天的第n时,每周的.每年的.来定时运行这个定时器.那么下面来讲诉如何使用quartz定时器. spr ...
- Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage
<Windows Azure Platform 系列文章目录> 本文介绍的是由国内世纪互联运维的China Azure,相比国外的Global Azure.主要区别是存储账号的DNS地址不 ...
- Android Fragment 解析和使用
Android Fragment的生命周期和Activity类似,实际可能会涉及到数据传递,onSaveInstanceState的状态保存,FragmentManager的管理和Transactio ...
- Dapper学习 - Dapper.Rainbow(一) - Create
Dapper这个ORM有许多扩展, 我自己用过两种, 也算是比较主流的两种, Rainbow和Extension, 这里就先介绍下Rainbow吧, 毕竟这个先用, 当然, 由于我使用的是mysql数 ...
- HoverTree项目添加了查看留言列表功能
HoverTree项目添加了查看留言列表功能 页面:HoverTreeWeb项目下hvtpanel/usermessage/messagelist.aspx 添加留言页面:addmessage.asx ...
- C#编程总结(四)多线程应用
C#编程总结(四)多线程应用 多线程应用很广泛,简单总结了一下: 1)不阻断主线程,实现即时响应,由后台线程完成特定操作2)多个线程,完成同类任务,提高并发性能3)一个任务有多个独立的步骤,多个线程并 ...
- Redis系列三之持久化
一.Redis持久化 Redis是一个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化. redis提供了不同级别的持久化方法: Snapshotting(快照,默认方式 ...
- 关于ASP.NET的“Forms身份验证”
目录结构如图如示: 如果用户没有通过身份验证则跳转到登录页面让用户登录,在配置文件的<system.web></system.web>结点下添加如下代码: <!--身份验 ...
- ANDROID 应用退出
在android中finish()和system(0)都只能退出单个activity.杀进程等的等方式都不行~~~解决问题: 在针对 多activity中退出整个程序,例如从A->B->C ...
- quartz TRIGGER_STATE变为ERROR解决方法
今天,项目组一个同事说开发环境一直正常quartz定时任务今天不跑了,因为异常已经封装了,所以应该不是没有捕获异常导致.也检查了JobDetail肯定没有重复的任务,最后检查qrtz_triggers ...