浏览 1762 次
锁定老帖子 主题:jQuery扩展ajaxName
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-15
jQuery扩展ajaxName,用于ajax提交方法的页面数据获取,根据页面元素的name生成相应的js对象,然后可以把这个对象传给JSON编码库进行编码向后台提交,支持数组,支持.表达式
/* * jQuery Ajax By Name Plugin * * licensed under the MIT licenses: * http://www.opensource.org/licenses/mit-license.php * * Author achun (achun.shx at gmail.com) * Create Date: 2008-6-21 * Last Date: 2008-6-21 * Revision:2.8.6.21 */ (function($) { /** * 获取鼠标点击的元素坐标 */ $.fn.clickPos = function(e){ var pos ={x:0,y:0}; if (e.offsetX != undefined) { pos.x = e.offsetX; pos.y = e.offsetY; } else if (typeof $.fn.offset == 'function') { var offset = this.offset(); pos.x = e.pageX - offset.left; pos.y = e.pageY - offset.top; } else { pos.x = e.pageX - this[0].offsetLeft; pos.y = e.pageY - this[0].offsetTop; } return pos; } /** * ajaxName() 根据标签name属性来提交数据,替代form提交方式 * options:{//与ajax的options是一样的结构 * data:{}//要附加提交的数据 * } * successful:如果元素有有效值,defualt:true */ $.fn.ajaxName = function(options,successful) { if(options==undefined) options={}; options.data = options.data || {}; successful = successful == undefined ? true:successful; var data = {}; var name= options.name || ''; this.each(function() { var el=this,o=$(this),n = o.attr('name'),hasval = o.attr('value')!=undefined; if (!n) return; var t = el.type, tag = el.tagName.toLowerCase(); if (n=='/'){ if (name=='') name = hasval?o.attr('value'):o.text(); return; } if (successful && (el.disabled || t == 'reset' || t == 'button' || (t == 'checkbox' || t == 'radio') && !el.checked || (t == 'submit' || t == 'image') || tag == 'select' && el.selectedIndex == -1)) return; var v= hasval? o.attr('value') :o.hasClass('ValueByText')?o.text():o.html(); if (v == undefined) return; if (n.indexOf('.')>0){ n=n.split('.'); var len=n.length - 1; var b=data; $.each(n,function(i){ if (i!=len){ if(b[this] == undefined) b[this]={}; b=b[this]; }else b[this]=v; }); }else if (n.indexOf('[]')>0){ n=n.slice(0,n.length-2); if(data[n] == undefined) data[n]=[]; data[n].push(v); }else{ data[n]=v; } }); var dat={}; if (name){ dat[name]=data; data=dat[name]; }else dat=data; for (var o in options.data){ data[o]=options.data[o]; }; options.data=dat; return options.data; }; })(jQuery); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |