jQuery操作编辑页面,span与input标签之间的随时转换

当鼠标点击span时,span会根据需要变成input或select标签,光标移开时,又变回span标签来展示编辑后的内容。

HTML代码如下(span里的值是动态添加的,与此无关):

 1           <li>
 2               <label for="companyType">企业性质</label>
 3                 <span class="companyType spanToSelect" id="companyType"></span>
 4           </li>
 5           <li>
 6               <label for="companySize">企业规模</label>
 7               <span class="companySize spanToSelect" id="companySize"></span>
 8           </li>
 9           <li>
10               <label for="companyMsg" class="companyMsgLabel">企业简介</label>
11                 <span class="companyMsg spanToTextarea" id="companyMsg"></span>
12           </li>
13           <br>
14           <br>
15           <li>
16               联系方式
17               <hr>
18           </li>
19           <li>
20               <label for="companyAddress">企业地址</label>
21               <input type="text" name="addressSelect" id="citySelect" class="city_input" value="湖北省-武汉市-洪山区" readonly="readonly">
22           </li>
23           <li>
24                  <span id="companyAddress" class="companyAddress spanToInput"></span>
25           </li>
26           <li>
27               <label for="companyTel">企业电话</label>
28               <input type="tel" id="tel1" class="tel1" placeholder="">
29               <select name="tel2" id="tel2" class="smallBtn2">
30                   <option value="021">021</option>
31               </select>
32               <span class="companyTel spanToInput" id="companyTel"></span>
33           </li>
34           <li>
35               <label >企业邮箱</label>
36               <span class="companyMail spanToInput" id="companyMail"></span>
37           </li>
38           <li>
39               <label for="companyIp">企业网址</label>
40               <span class="companyIp spanToInput" id="companyIp"></span>
41           </li>

js代码如下:

1、input select textarea转span
 1 var switchToSpan=function () {
 2             // console.log($(this).attr("id"));
 3             var cId=$(this).attr("id");//获取当前点击input的id
 4            //console.log($("#"+cId).prop(‘nodeName‘).toLowerCase());
 5             var thisTag=$("#"+cId).prop(‘nodeName‘).toLowerCase();
 6         var a,b=null;
 7         if(thisTag=="input"){
 8             a=$(this).val();
 9              b=switchToInput;
10         }
11         else if(thisTag=="select"){
12              a=$(this).find("option:selected").text();//获取selected的option文本值
13              b=switchToSelect;
14         }
15         else if(thisTag=="textarea"){
16             a=$(this).val();
17             b=switchToTextarea;
18         }
19         var $span=$("<span>",{
20                     text: a
21                 });
22             $span.addClass(cId);
23             $span.attr("id",cId);
24             $(this).replaceWith($span);
25             $span.on("click",b);
26 };
2、span转input
 1 var switchToInput=function () {
 2             //console.log($(this).attr("id"));
 3             var cId=$(this).attr("id");//获取当前点击span的id
 4             var $input=$("<input>",{
 5                 val:$(this).text(),
 6                 type:"text"
 7             });
 8             $input.addClass(cId);
 9             $input.attr("id",cId);
10             $(this).replaceWith($input);
11             $input.on("blur",switchToSpan);//失去焦点时,执行switchToSpan函数
12             $input.select();
13         };

3、span转select

 1  var switchToSelect=function () {
 2
 3             var cId = $(this).attr("id");//获取当前点击input的id
 4             var $select = $("<select></select>");
 5             var arr=[["国有企业","集体企业","私营企业","三资企业"],["人数<20","20≤人数<300","300≤人数<1000","1000≤人数<5000","人数≥5000"]];
 6             var j=null;
 7             if(cId=="companyType"){
 8                 //var arr1=new Array("国有企业","集体企业","私营企业","三资企业");
 9                 //console.log(arr1);
10                 $select.addClass("midBtn1");
11                 j=0;
12             }
13             else if(cId=="companySize"){
14                 j=1;
15                 $select.addClass("midBtn1");
16             }
17             for(var i=0;i<arr[j].length;i++){
18                 $select.append("<option value=‘"+arr[j][i]+"‘>" +arr[j][i]+"</option>");
19             }
20             $select.addClass(cId);
21             $select.attr("id", cId);
22             $(this).replaceWith($select);
23             $select.on("blur",switchToSpan);
24 }

4、span转textarea

 1  var switchToTextarea=function () {
 2             var cId = $(this).attr("id");
 3             var $textarea=$("<textarea cols=‘50‘ rows=‘6‘></textarea>");
 4             $textarea.val($(this).text());
 5             $textarea.addClass(cId);
 6             $textarea.attr("id",cId);
 7             $(this).replaceWith($textarea);
 8             $textarea.on("blur",switchToSpan);
 9             $textarea.select();
10
11         }

5、给span添加点击事件

1     $(".spanToInput").on("click",switchToInput);
2     $(".spanToSelect").on("click",switchToSelect);
3     $(".spanToTextarea").on("click",switchToTextarea);

原文地址:https://www.cnblogs.com/mmmzf/p/9264336.html

时间: 2024-07-31 20:36:18

jQuery操作编辑页面,span与input标签之间的随时转换的相关文章

jQuery计算文本宽度和input标签根据输入字符动态自适应宽度的实现

jQuery计算文本宽度的原理是利用html提供的<pre>标签,向dom中动态添加<pre>标签,标签里的内容就是要测试长度的文本,获取完长度之后再删除刚才添加的<pre>标签,从而可取到文本的大概长度了.为什么要用标签而不用其他标签呢,那来看看<pre>标签的特性吧:pre 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符;而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.需要注

使用jQuery操作DOM对象

一.jQuery操作样式 /* 单个样式 */ $("li:first").css("color","#009933"); /* 多个样式 */ $("li:eq(1)").css({"color":"#FFFF00","background":"#FFCCCC"}); /* 添加样式,引用style的.xxxxx */ $("li:eq

input元素之间的融合

将两个input融合在一起,注意input标签之间的空格 .put1{ width: 20px; height: 28px; vertical-align:middle; border: 1px solid #ebebeb; border-left: 0px; background: #ffffff;}.put2{ width: 200px; height: 25px; vertical-align:middle; border: 1px solid #ebebeb; border-right:

jQuery的属性操作/使用jQuery操作input的value值

一.jQuery的属性操作 jQuery的属性操作模块分成四个部分: HTML属性操作, DOM属性操作, 类样式操作和值操作 HTML属性操作: 是对HTML文档中的属性读取,设置和移除操作; 比如:attr(), removeAttr() DOM属性操作: 对DOM元素的属性进行读取, 设置和移除操作; 比如prop(), removeProp() 类样式操作: 是指对DOM属性className进行添加, 移除操作; 比如addClass(), removeClass(), toggleC

JQuery操作标签

JQuery操作标签 一.样式操作 1 添加指定的CSS类名 addClass(); 2 移除指定的CSS类名 removeClass(); // 与addClass一起连用实现开关 3 判断样式存不存在 hasClass(); // true //false 4 切换CSS类名,如果有就移除,如果没有就添加 toggleClass(); // 实现删除和动态添加 5 CSS操作 $("选择器").css(样式) 二.位置操作 1 获取匹配元素在当前窗口的相对偏移或设置元素位置 off

jQuery 操作 input 之 checkbox

jQuery 操作 input 之 checkbox 一片 HTML 清单: <input type="checkbox" name="hobby" value="棒球"> 棒球 <input type="checkbox" name="hobby" value="乒乓球"> 乒乓球 <input type="checkbox" name

jQuery操作input值总结

1.获取选中的值: 获取一组radio被选中项的值: var item = $("input[@name=items]:checked").val(); 获取select被选中项的文本: var item = $("select[@name=items] option[@selected]").text(); select下拉框的第二个元素为当前选中值: $('#select_id')[0].selectedIndex = 1; radio单选组的第二个元素为当前选

jQuery操作&lt;input type=&quot;radio&quot;&gt;

jQuery操作<input type="radio"> <input type="radio">如下: 1 2 3 4 5 <input type="radio" name="city" value="BeiJing">北京 <input type="radio" name="city" value="TianJi

input jquery 操作

本文章主要为了总结开发常用的input等常见html的jquery操作,不是为了展示自己多么菜,只为了积累知识,勿喷!!!不断更新中 $(function () { $("input[name=T]").eq(0).attr("checked", "checked"); //默认第一个选中 $("input[name=T]").each(function () { $(this).click(function () { $(&