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 所以,需要将字符串进行转换,为"\"符号进行转义

具体实现:

  1. 在PHP中,针对字符串,使用addslashes函数: $this->assign('customField', addslashes(json_encode($customField)));
  2. 在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) {

    }
});