项目日记_springMVC 学习杂记 4

本台插播一条重要新闻,下面写的东西中,用紫色标注的都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都不同





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值