项目日记_springMVC 学习杂记 4
来源:互联网 发布:飞控电子显示屏软件 编辑:程序博客网 时间:2024/06/13 22:12
本台插播一条重要新闻,下面写的东西中,用紫色标注的都TM有问题(关于onpropertychange问题,select联动的change是可以触发到的),我去年买了个大鼠标,网上的东西不能轻信,关键onsubmit那个是从w3c上看到的,是我理解错了,还是IE出补丁了,还是本就浏览器兼容问题,以后一定要对自己写的东西负责啊,大书包
1.JS文件飘红,clean一下就OK了,一般都是IDE的问题
2.路径问题
:在Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录,"../"代表上级目录。
需要调用web-inf下的js 用绝对路径掉,或者要用 request 取项目路径 然后拼出js的路径来调
3.request获取路径:转自ItEye
request 获取各种路径
4.form表单提交
4.1 dom中submit
html DOM中
Submit 对象代表 HTML 表单中的一个提交按钮 (submit button)。
在 HTML 表单中 <input type="submit"> 标签每出现一次,一个 Submit 对象就会被创建。
在表单提交之前,触发 onclick 事件句柄,并且一个句柄可以通过返回 fasle 来取消表单提交。
您可以通过遍历表单的 elements[] 数组来访问某个提交按钮,或者通过使用document.getElementById(),或者使用jquery。来得到这个submit对象
formObject.submit()
该方法提交表单的方式与用户单击 Submit 按钮一样,但是表单的 onsubmit 事件句柄不会被调用。
Form 对象的 onsubmit 属性指定了一个事件句柄函数。当用户单击了表单中的 Submit 按钮而提交一个表单时,就会调用这个事件句柄函数。注意,当调用方法Form.submit() 时,该处理器函数不会被调用。
如果 onsubmit 句柄返回 fasle,表单的元素就不会提交。如果该函数返回其他值或什么都没有返回,则表单会被提交。
提示:由于 onsubmit 句柄可以取消表单的提交,所以它对于进行表单验证是十分理想的。
提示:可以用iframe来实现无刷新提交表单
<form action="*****.action" id="form1" name="form1" encType="multipart/form-data" method="post" target="hidden_frame" > <input type="file" id="file" name="file" style="width:450"> <INPUT type="submit" value="上传文件"><span id="msg"></span> <br> <font color="red">支持JPG,JPEG,GIF,BMP,SWF,RMVB,RM,AVI文件的上传</font> <iframe name='hidden_frame' id="hidden_frame" ></iframe> </form>
4.2 引用jquery.form.js,是要在1.7以上(on函数是在1.7以上才支持的)?忘了
好处是可以有成功失败等回调函数,最关键的是可以指定刷新区域,比如下面的修改 头像完了,刷新头像的例子
'<form id="updateUser" method="post" action="addOrUpdateUserInfo.view" enctype="multipart/form-data"> ','<input type="file" id="uploadImg" name="uploadImg" class="filetext"/>','<a id="submitImage" class="ckm-btn " disabled="disabled">提交</a>','<span></span>','</form>',var options = { target: '#mydiv', // 需要刷新的区域 //beforeSubmit: showRequest, // 提交前调用的方法 //success: showResponse // 返回后笤俑的方法 // other available options: //url: url // 提交的URL, 默认使用FORM ACTION //type: type // 'get' or 'post', override for form's 'method' attribute //dataType: null // 'xml', 'script', or 'json' (expected server response type) //clearForm: true // 是否清空form //resetForm: true // 是否重置form // $.ajax options can be used here too, for example: //timeout: 3000 }; $("#submitImage").on("click",function(){$("#addOrupdateUser").ajaxSubmit(personalOptions);}) $("#uploadImg").on("propertychange",function(){$("#submitImage").next().text("");$("#submitImage").removeAttr("disabled");});function showPersonal(){$("#personalImg").attr("src","queryImageById.view?refresh="+Math.random());$("#submitImage").attr("disabled","disabled").next().text("提交成功");}'<img id="personalImg" class="personalImg" src="queryImageById.view?refresh="'+Math.random()+'/>'1.propertychange 是IE8独有属性,
这个问题来自IE(LTE8)中对checkbox和radio change事件的实现问题,在IE(LTE8)中测试下来,当你点击一个checkbox或者radio,它的change事件是不会立即触发,除非你让它失去焦点,而在其他标准浏览器中(包括IE9),是点击后立即触发change事件的,这的确是个蛋疼的问题,说到解决方法,倒也比较容易,用IE(LTE8)中元素特有的propertychange事件来处理(IE9已经没这玩意儿了),就能避免上述问题,如:
checkEl.attachEvent('onpropertychange', function() {
console.log('hey man, I am changed');
});
但是这样就认为解决了,是不充分的,因为像checkEl.setAttribute('data-value', 'god')这样的操作也会触发其propertychange事件,所以我们需要用其event.propertyName来判断下,如:
checkEl.attachEvent('onpropertychange', function() {
if(window.event.propertyName == 'checked')
console.log('blah blah blah...');
});
2.加上Math.random()的目的是让每次请求不同
浏览器会把请求缓存,如果你的请求相同,他会优先读缓存,所以加上一个随机数,尽量保证每次请求的URL都不同
- 项目日记_springMVC 学习杂记 4
- 项目日记_springMVC 学习杂记 2
- 项目日记_springMVC 学习杂记 3
- 项目日记_springMVC 学习日记 1
- android学习杂记.4
- iMagBookShelf项目杂记(4)
- 项目杂记
- 项目--杂记
- c++学习杂记(4)
- Spring学习2_springmvc常用注解之@Controller和@RequestMapping
- 学习杂记
- 学习杂记
- 学习杂记
- 学习杂记
- 学习杂记
- 学习杂记
- 学习杂记
- 学习杂记
- 如何成为优秀的驱动开发工程师
- 垃圾清理势在必行—java垃圾收集算法
- LA 4727 Jump
- 外煤关注:百度收购大部分糯米股份
- UVA 624 CD(DP + 01背包)
- 项目日记_springMVC 学习杂记 4
- MongoDB之旅(一)简介
- 服务进程创建一个带窗口的进程,过UAC
- 改变需要从现在做起
- 有意识锻炼语言表达能力。
- HDU 4340 Capturing country(树状DP)
- 【CSS】瀑布流布局的两种方式:传统多列浮动和绝对定位布局
- 多线程并发 synchronized对象锁的控制与优化
- 配置Oracle网络环境