evshop_js.md
1.97 KB
EVShop编程规则之Javascript篇
1. HTML中添加sevent/saction/sparams 对元素进行事件的绑定
> 事件绑定是通过jquery的on方法,绑定在document元素上,基于事件的冒泡实现的。
- 在视图html中,可以通过以下方式进行事件的绑定动作:
<a href="JavaScript:void(0);" class="ncsc-btn-mini" sevent="click" saction="picAction" stype="multiDel" sparams="1,2" ></a>
<a href="JavaScript:void(1);" class="ncsc-btn-mini" id="img_move" sevent="click" saction="picAction" stype="multiMov" sparms="3,4"></a>
- 在此视图对应的js文件中,只需要定义以下事件:
PageModel.prototype.picAction = function(sender,param1,param2) { if($(sender).attr("stype")==="multiDel") { //具体事件的动作 } }
在绑定的过程中,支持的事件行为(sevent)有:
"click", "change", "blur", "dbclick", "focus", "hover", "resize"
2. JSON.Parse函数的参数存在特殊字符的处理
JSON.Parse()函数,使用的参数是一个字符串, 该字符串中存在"\"时,函数转换就会出错,出错提示为:
JSON.parse: expected ',' or '}' after property value in object
所以,需要将字符串进行转换,为"\"符号进行转义
具体实现:
- 在PHP中,针对字符串,使用addslashes函数:
$this->assign('customField', addslashes(json_encode($customField)));
- 在JS中,使用replace将"\"转换成"\"格式
3. 使用jquery-form 进行异步提交
jquery-form是一种js的异步提交,提交时,除了把指定的form数据进行提交, 还支持额外自定义数据的提交
实现方式:
var jquery_form = require("jquery-form");
$(selector).ajaxSubmit({
data:[extraSubmitdata]
dataType:'json',
type:'post',
timeout:5000,
success:function(responseText,stsText,xhr,element) {
},
error:function(error) {
}
});