当前位置: 首页 > news >正文

广西网站建设招标公司wap网站建设免费

广西网站建设招标公司,wap网站建设免费,深圳网站建设公司哪里好,html5开发环境前面发过一个版本了#xff0c;后来又追加了些功能。重新发一版。新版支持select和radio。 效果图#xff1a; 右上角带有绿标的#xff0c;是可以修改的单元格。如果不喜欢显示绿标#xff0c;可以传递参数时指定不显示#xff0c;如果想改为其它颜色#xff0c;也可以…前面发过一个版本了后来又追加了些功能。重新发一版。新版支持select和radio。 效果图 右上角带有绿标的是可以修改的单元格。如果不喜欢显示绿标可以传递参数时指定不显示如果想改为其它颜色也可以传递参数时指定颜色。如果觉得标记符号太小可以通过signSize设置其大小。例如 1 1.5 2 3 都可以。必须 为数字。 封装代码 function wm_click_modify(config) {this.identify config.identify;this.callback config.callback;this.srcElement null;this.id null;this.field null;this.input null;this.signSize typeof config.signSize undefined ? 1 : config.signSize;this.sign typeof config.signObj undefined ? true : config.signObj;this.signColor typeof config.signColor undefined ? #f00 : config.signColor;this.dataType null;this.datas null;this.radio_value null;this.select_value null;this.selector null; } wm_click_modify.prototype {create: function () {var elem document.querySelectorAll(this.identify)var that this;for (i 0; i elem.length; i) {if (that.sign true) {elem[i].style.position relative;elem[i].style.overflow hidden;var div document.createElement(div);div.style.position absolute;div.style.backgroundColor this.signColor;div.style.right this.signSize * -2 px;div.style.top this.signSize * -2 px;div.title 双击空白区域可编辑div.style.width this.signSize * 4 px;div.style.height this.signSize * 4 px;div.style.transform rotate(45deg)elem[i].appendChild(div)}elem[i].addEventListener(dblclick, function (e) {that.dblclick_e(e);}, true)}},dblclick_e: function (e) {if (e.srcElement.nodeName.toLowerCase() input || e.srcElement.nodeName.toLowerCase() textarea || e.srcElement.nodeName.toLowerCase() radio || e.srcElement.nodeName.toLowerCase() select) {return;}var input;var that this;this.srcElement e.srcElement;var id e.srcElement.getAttribute(data-id);var field e.srcElement.getAttribute(data-field);this.id id;this.field field;this.dataType e.srcElement.getAttribute(data-datatype);var ohtml e.srcElement.innerHTML;var ovalue e.srcElement.innerText;var container_remove document.getElementsByClassName(container_wm_click_modify);if (container_remove.length 0) {for (var i 0; i container_remove.length; i) {container_remove[i].parentNode.innerHTML container_remove[i].getAttribute(ohtml);}}let offsetWidth e.srcElement.offsetWidth 0 ? 40 : e.srcElement.offsetWidth;let offsetHeight e.srcElement.offsetHeight 0 ? 100 : e.srcElement.offsetHeight;e.srcElement.innerHTML ;var container document.createElement(span)container.className container_wm_click_modify;container.setAttribute(ohtml, ohtml);e.srcElement.appendChild(container);if (this.dataType null || this.dataType text || this.dataType ) {input document.createElement(textarea);this.input input;input.id wm_click_create_input_ field _ id;input.style.borderColor #ccc;input.style.borderWidth 1pxinput.style.padding 5px;//input.style.resize none;input.style.width offsetWidth px;input.style.height offsetHeight px;input.setAttribute(ovalue, ovalue);input.setAttribute(ovalue_html, ohtml);input.value ovalue;e.srcElement.appendChild(input)input.focus();input.onblur function () {if (this.getAttribute(ovalue) ! this.value) {console.log(提交)var newvalue this.value;if (typeof that.callback ! undefined) {that.callback({ id: id, field: field, value: newvalue })} else {console.log(未定义callback)e.srcElement.innerHTML document.getElementById(field _ id).value;}} else {console.log(不提交)e.srcElement.innerHTML this.getAttribute(ovalue_html);}}} else if (this.dataType radio) {var label, span, that thisvar data_list e.srcElement.getAttribute(data-datalist);if (data_list || data_list null) {return;}this.datas JSON.parse(data_list);var tmp document.createElement(input)//tmp.id this.field _ this.id;tmp.value ovalue;tmp.type hidden;tmp.setAttribute(ovalue_html, ohtml);tmp.setAttribute(ovalue, ovalue);this.input tmp;container.appendChild(tmp)for (var k 0; k this.datas.length; k) {label document.createElement(label);label.style.marginRight 10pxcontainer.appendChild(label);input document.createElement(input);input.type radio;input.name field;input.value this.datas[k].value;input.setAttribute(value_title, this.datas[k].title)if (ovalue this.datas[k].title) {input.checked true;input.focus();}input.style.marginRight 6px;input.style.width 24px;input.style.height 24px;input.style.verticalAlign middle;span document.createElement(span);span.innerHTML this.datas[k].title;label.appendChild(span);label.insertBefore(input, span);var that this;input.onclick function (e) {var newvalue this.getAttribute(value_title);that.radio_value newvalue;if (newvalue ! ovalue) {console.log(提交)tmp.value newvalue;if (typeof that.callback ! undefined) {that.callback({ id: id, field: field, value: this.value })} else {console.log(未定义callback)that.srcElement.innerHTML ohtml;}} else {console.log(不提交)that.srcElement.innerHTML ohtml;}}input.onblur function (e) {console.log(on my god)}}} else if (this.dataType select) {var label, span, that thisvar data_list e.srcElement.getAttribute(data-datalist);if (data_list || data_list null) {return;}this.datas JSON.parse(data_list);var tmp document.createElement(input)tmp.value ovalue;tmp.type hidden;tmp.setAttribute(ovalue_html, ohtml);tmp.setAttribute(ovalue, ovalue);this.input tmp;container.appendChild(tmp)var selector document.createElement(select);this.selector selector;container.appendChild(selector)selector.style.padding 2px;selector.style.fontSize 18pxfor (var k 0; k this.datas.length; k) {selector.options.add(new Option(this.datas[k].title, this.datas[k].value))if (this.datas[k].title ovalue) {selector.options[k].selected true;}}selector.focus();selector.onchange function (e) {var newvalue selector.options[selector.selectedIndex].text;if (newvalue ! ovalue) {that.select_value newvalue;console.log(提交, newvalue)if (typeof that.callback ! undefined) {that.callback({ id: id, field: field, value: this.value })} else {console.log(未定义callback)that.srcElement.innerHTML ohtml;}}}selector.onblur function (e) {that.srcElement.innerHTML ohtml;}}},success: function () {try {if (this.dataType null || this.dataType text || this.dataType ) {this.srcElement.innerHTML document.getElementById(wm_click_create_input_ this.field _ this.id).value;} else if (this.dataType radio) {this.srcElement.innerHTML this.radio_value} else if (this.dataType select) {this.selector.onblur null;this.srcElement.innerHTML this.select_value;}} catch (e) {console.log(这里不要展示给用户。select在blur时已删除元素因此会报错。而又必须在blur时干点什么)}if (this.sign true) {var div document.createElement(div);div.style.position absolute;div.style.backgroundColor this.signColor;div.style.right this.signSize * -2 px;div.style.top this.signSize * -2 px;div.style.width this.signSize * 4 px;div.style.height this.signSize * 4 px;div.style.transform rotate(45deg)this.srcElement.appendChild(div)}},fail: function () {try {this.srcElement.innerHTML this.input.getAttribute(ovalue_html);} catch (e) {}} }; 1、调用方法 new wm_click_modify(json格式的参数).create(); 可以看到主要就是json格式的参数这一块怎么写。后面会说先说说前置工作。 html里的代码也要做些修改。 原来你的代码是这样写的 divsos/div 假如这个内容是数据库中id为3的记录字段名为name的内容现在我们想双击这个DIV可以修改修改完后再提交到后端。我们要这样来修改 div modify data-id3 data-fieldnamesos/div 事实上并不局限于div。在table中的td也可以这样来弄。理论上在哪都行这取决于选择器能否正确选择要修改的元素。 如果是td那就要这样改 td modify data-id3 data-fieldnamesos/td html内容已经准备好了。下面我们要让双击修改效果生效调用上面封装的代码。以表格元素td为例。js代码如下 new wm_click_modify({identify:td[modify], signObj: true, signSize:1.5, signColor:green, callback: function(res){var that this;var loading msgbox.show(正在提交, loading)wm_ajax(/admin/Setting/edit.html,{data: {id:res.id,field:res.field,value:res.value},dataType: json,type: post,sync: true,success: function(data){console.log(data)if(data.code 0){msgbox.close(loading)msgbox.show(data.msg, right);that.success()} else {msgbox.close(loading)msgbox.show(data.msg, error);that.fail();}},error: function(data){msgbox.close(loading)msgbox.show(data.msg, error);that.fail();}});}}).create(); 第一个参数是 identify即指定选择器的选择。凡是能被querySelector 选择的写法均受支持。示例代码中写的是td[modify]即带modify属性的td元素。必须传递。 第二个参数是signObj即指定是否显示可编辑指示器。就是那个小绿点。如果未指定这个参数则默认显示。 第三个参数signSize即指定指示器大小。取值可以为11.5, 2 等这些数字。如果未指定这个参数默认为1 第四个参数是signColor即指定指示器颜色。取值为css颜色代码例如 red    #f00  都可以。如果未指定这个参数默认为红色 第五个参数是回调函数     callback:function(res){//在res中包含以下内容 id(本条数据的记录id)、field(要修改的字段名)、value新值取值分别为res.idres.fieldres.value}         系统判断内容是否有修改如果有修改会回调这个函数您需要在这个函数中写提交后端的代码如果没有修改不会回调这个函数。 2、回调函数里的代码怎么写 回调函数一般就是用ajax往后端提交有一点需要注意当后端返回到前端处理结果之后还需要调用一下封装代码中的一个方法。伪代码如下 const that this; ajax({url:,data: {id:res.id,field:res.field,value:res.value},success: function(data){if(data.code 0){alert(修改成功);that.success() //这是新添加的} else {that.fail(); //这是新添加的}},error:function(e){alert(服务器错误请稍候再试);that.fail(); //这是新添加的} }) 懂ajax的应该看明白了。就是加了  that.success()  和that.fail()。必须要调用否则页面上的内容不会改变。这样后端就收到了要修改哪条记录的哪个字段新值是多少。 上面是对纯文本内容的修改假如要修改的是性别呢我们希望用户只选择男或女并不希望输入其它内容。还有就是特殊的内容一般也只让选择不让手动修改。我们来看看select和radio的用法。 从html的修改开始。还是以table的td为例。 假设原始html内容为 tdsos/td 如果想让用户双击后变成select需要这样修改 td modify data-id3 data-fieldgender data-datalist[{value:0, title:不知道},{value:1, title:男},{value:2, title:女}] data-datatypeselectsostd 其中data-id和data-field和上面一样一个指定数据表的id(唯一索引)一个指定字段名。后面datalist就是一个数据列表用户可以选择里面的数据。data-datatype 指定元素类型这里的值取的是select意思是说当用户双击后会变成select让用户选择data-datalist中的数据。如果想用radio那只需要把data-datatype的值设置为radio即可。 因为radio没有blur事件,封装代码虽然处理了这种情况但是还是不如select更方便。所以2者选一的话建议使用select。 调用部分代码不变。
http://www.tj-hxxt.cn/news/229967.html

相关文章:

  • 广州网站建设公司小程序网站自适应案例
  • 北京网站备案拍照地址鼓楼免费网页设计生成器
  • 网站建设与网站优化中国城乡建设部官网
  • 厦门it做网站最强软件开发需要学什么语言
  • 优秀国内个人网站网址做外贸的有哪些网站
  • 引物在线设计网站企业简介宣传片视频
  • 福州网站建设方案四大门户网站流量对比
  • 湖南省网站备案网站电脑基础培训班
  • 天津百度首页优化排名长沙百度快速优化
  • 个人网站设计论文题目八戒商标注册网
  • 东莞网站建设上科广东新闻联播片尾
  • 域名可以同时做邮箱和网站么做寻亲网站的理由
  • 缙云县城乡建设局网站战队logo设计在线生成
  • 网站建设与网页设计美食网站建设类课题的研究方法
  • 网站设计个人北京vi设计公司哪
  • 网站如何不让百度抓取wordpress 回车
  • 蓟县做网站写一个网站
  • 做网站攻击wordpress 设置文件
  • 国外开源网站系统举例说明seo
  • 建设一个网站的一般过程分析北师大教育学原理网站建设
  • 深圳微商城网站设计制作wordpress4.5.3zhcn
  • 自己制作头像app软件成都网站优化服务
  • 丹阳做网站的山东省住房和城乡建设局网站
  • 芜湖市公司网站建设哪家好互联网行业使用收益法进行评估时
  • 成都维尼网络 网站建设广州软件开发人力外包价格
  • 学网站ui设计wordpress 网易相册
  • 网站加速cdn建一个大网站需要的时间
  • 网站建设广金手指六六十四制作图网 专业图片在线制作网站
  • 购物网站怎么做推广网站色彩运用
  • 企业官方网站是什么中国企业500强2023