`
ikeycn
  • 浏览: 146567 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

javascript实现鼠标点击文本后变为输入框(文本动态编辑)

阅读更多
javascript实现鼠标点击文本后变为输入框

有不少页面应用中会有这样的情境:当鼠标放到一段文本并点击时,会隐藏当前文本,然后显示出一个编辑框,可用来对现在文本进行编辑。当鼠标在其他地方点击时,恢复到原来的文本显示,效果如下:

原始文本:

鼠标点击后如下:


我这里实现思路是:开始时有一个<p></p>用于最初文本的显示。当点击后,此标签的display被设置为none,同时创建两个新的元素:input和button。代码如下:

初始的页面效果代码:
<td class="noborder" colspan="2">
    <div class="smallpicdiv" style="margin-left: 20px;">
		<a href="../Item/ItemDetail?numIid=@item.NumIid" title="查看宝贝详情" target="_blank">
			<img src="@item.PicUrl" class="smallpic" alt="点击查看宝贝详情" />
		</a>
    </div>
    @{
		var titleId = "item_" + @item.NumIid;
    }
    <div style="float: left;">
		<p id="@titleId" class="itemTitleBg" onmouseover="showBgColor(this)" 
			onmouseout="hiddenBgColor(this)" title="编辑" onclick="hiddenEle('@item.NumIid');" >@item.Title</p>
    </div>
 </td>


对应的js代码如下,在注释中有详细的说明:
// 获得初始文本,设置为隐藏,然后判断是否已有输入域,如果没有则创建输入框
function hiddenEle(id) {
        var titleP = document.getElementById("item_" + id);
        titleP.style.display = "none";	
        if (!document.getElementById("title_input_" + id)) {
            buildEditDiv(titleP.parentNode, id);
        }
    }
	//创建输入框和保存按钮
    function buildEditDiv(titleDiv, id) {
        var editText = document.createElement("input");
        var titleP = document.getElementById("item_" + id);
        var oldTitle = titleP.firstChild.data;
        editText.setAttribute("class", "newItemTitle");
        editText.setAttribute("type", "text");
        editText.value = oldTitle;
        editText.name = id;
        editText.id = "title_input_" + id;

        titleDiv.appendChild(editText);

        titleDiv.appendChild(document.createElement("br"));

        var submitButton = document.createElement("button");
        submitButton.appendChild(document.createTextNode("保存"));
        submitButton.id = "title_button_" + id;
        submitButton.onclick = function () {
            ajaxChangeTitle(id, oldTitle, editText.value);
            return false;
        }
		//这里输入框失去焦点后,设置了等待时间200ms才执行删除input和button操作,主要是为了在删除input之前,在button的onclick动作中能获得input的新值。
        editText.onblur = function () {
            setTimeout(function () {
                titleDiv.removeChild(submitButton);
                titleDiv.removeChild(titleDiv.lastChild);
                titleDiv.removeChild(editText);
                titleP.style.display = "";
            }, 200);
        }
        titleDiv.appendChild(submitButton);
        editText.focus();
    }
    function ajaxChangeTitle(id, oldTitle, newTitle) {
        var titleP = document.getElementById("item_" + id);
        titleP.firstChild.data = newTitle;
        $.ajax(
        {
            url: '/TopDemo/Item/UpdateTitle',
            data: '{"iid":"' + id + '", "newTitle":"' + newTitle + '" }',
            type: "POST",
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data == null || data.length == 0 || data == "false") {
                    updateTitleError(id, oldTitle);
                }
            },
            error: function (data) {
                updateTitleError(id, oldTitle)
            }
        });
    }
    function updateTitleError(id, oldTitle) {
        var titleP = document.getElementById("item_" + id);
        titleP.firstChild.data = oldTitle;
        alert("更新宝贝标题失败");
    }

    function showBgColor(ele) {
        ele.setAttribute("class", "itemTitleBg_c");
    }

    function hiddenBgColor(ele) {
        ele.setAttribute("class", "itemTitleBg");
    }



这样就实现了简单的动态编辑文本的效果了。
分享到:
评论

相关推荐

    程序天下:JavaScript实例自学手册

    第3章 字符串文本和输入框特效 3.1 只带下划线的输入框 3.2 限定文本框可输入字符数 3.3 文字过长的省略号 3.4 输出26个英文字母 3.5 首字母变为大写 3.6 textarea自适应文字行数 3.7 禁止文本框的拷贝和粘贴 3.8 ...

    《程序天下:JavaScript实例自学手册》光盘源码

    第3章 字符串文本和输入框特效 3.1 只带下划线的输入框 3.2 限定文本框可输入字符数 3.3 文字过长的省略号 3.4 输出26个英文字母 3.5 首字母变为大写 3.6 textarea自适应文字行数 3.7 禁止文本框的拷贝和粘贴 3.8 ...

    jQuery实现感应鼠标动画效果自动伸长的输入框实例

    本例详细解析了如何利用jQuery实现一个输入框在鼠标悬停时自动伸长的效果,并在鼠标移开后恢复原始尺寸。这不仅涉及到了jQuery的事件监听功能,还涉及到了通过animate函数实现平滑动画效果的技术。 首先,代码中...

    基于纯HTML技术实现的在线编辑器精简版v2009源码程序例子

    在这个编辑器中,JavaScript可能被用来监听用户操作,如键盘输入、鼠标点击,以及执行相应的处理,如格式化文本、插入图片或链接。例如,使用`document.getElementById()`函数可以获取HTML元素,`addEventListener()...

    js设置鼠标

    ### JavaScript 设置鼠标形状知识点 #### 一、概述 ...总之,通过合理运用 CSS 的 `cursor` 属性和 JavaScript 的事件监听机制,我们可以轻松实现鼠标形状的动态变化,从而增强网站的互动性和美观性。

    几种设置表单元素中文本输入框不可编辑的方法总结

    `disabled`属性则更为严格,它不仅使文本输入框变为不可编辑,还将其呈现为灰色,表明它是禁用状态。当`disabled`属性被设置时,用户无法与该输入框进行任何交互,包括选中、复制文本。此外,`disabled`的输入框在...

    Javascript应用实例汇总

    示例中的`onFocus`和`onMouseOver`事件结合使用,可以在输入框获得焦点时自动选择全部文本。这对于搜索框等场景非常有用,可以提高用户体验。 ### 14. 显示文档最后修改时间 示例中的`function hi(str)`函数展示了...

    html5文件上传输入框样式代码.zip

    这个CSS代码将自定义按钮的样式设置为黑色背景、白色文字,并在鼠标悬停时变为深灰色。`::before`伪元素用于在按钮上显示文本。 总结来说,HTML5文件上传输入框样式代码的实现涉及到HTML的`&lt;input type="file"&gt;`...

    CSS实现当鼠标移到input上时鼠标变为不可输入的状态

    例如,在用户点击了某个按钮或满足了某些条件后,我们可以使用JavaScript来动态地为输入框添加或移除disabled属性,从而控制其是否可输入,同时,也可以配合CSS来改变鼠标悬停时的指针形状。 在实际项目中,设计师...

    实用的31种javascript实例

    - 示例中,当鼠标悬停在输入框上时,输入框自动获得焦点并选中其中的文本。 #### 14. 显示页面最后修改日期 可以使用`document.write()`函数结合`document.lastModified`属性来显示页面最后的修改日期。示例代码...

    jsp文本框小技巧、特效

    **技巧描述:** 当鼠标悬浮在文本框上时,文本框的边框颜色变为黑色,背景色变为紫罗兰色;当鼠标移开时,恢复原样。 **代码实现:** ```html onmouseover="this.style.borderColor='black';this.style....

    javaScript技巧

    例如,`按钮" onMouseOut="this.style.color='blue'" onMouseOver="this.style.color='red'"&gt;` 实现了鼠标悬停时按钮文字颜色变为红色,鼠标离开后恢复为蓝色的效果,这不仅美观,也增加了用户操作的直观性。...

    JavaScript表单相关事件.pdf

    `onfocus`事件在用户将输入设备(如鼠标或键盘)的焦点转移到某个元素上时触发,例如点击一个文本输入框。与此相对应的是`onblur`事件,它在元素失去焦点时触发,比如用户点击了页面上的其他元素。这两个事件通常...

    JavaScript习题库[参照].pdf

    鼠标事件包括`onclick`(点击)、`onmouseover`(鼠标悬停)和`onmouseout`(鼠标离开),而不包括`onload`,因为`onload`是页面加载完成的事件。 在HTML表单提交方法中,`GET`和`POST`是最常见的。`GET`方法将数据...

    200个Javascript技巧代码

    提供一个链接或按钮,点击后可以直接打印当前页面。 **示例代码:** ```html &lt;a href='javascript:window.print()'&gt;打印页面 ``` **功能解析:** - `window.print()`方法用于调用浏览器的打印功能。 #### 13. ...

    让input变成不可编辑状态的方法.pdf

    【标题】:“让input变成不可编辑状态的方法.pdf” 在HTML中,`&lt;input&gt;`标签用于创建用户可交互的表单元素,如文本框、按钮等。有时候,我们可能需要将一个`&lt;input&gt;`元素设置为不可编辑状态,以防止用户修改其中的...

    JavaScript技巧收集

    当输入框获得焦点或鼠标悬停在其上方时,自动选中其中的文本,方便用户快速替换或编辑。 ##### 14. 显示文档最后修改时间 **示例代码:** ```javascript function hi(str) { document.write(document.last...

    Javascript技巧大集

    可以使用CSS和JavaScript控制输入框的样式和功能,如设置边框、颜色、大小,以及响应鼠标悬停和聚焦事件。例如: ```html 关键词" onFocus="this.select()" onMouseOver="this.focus()" class="line"&gt; ``` 这段代码...

    基于javascript实现表格的简单操作

    例如,表格行(tr)的文本设置为居中对齐,偶数行设置了灰色背景色,而鼠标悬停在行上时行的背景色变为绿色。此外,输入框被设置了宽度和背景色。 5. HTML文档结构 文章中提到了HTML文档结构的重要性。例如,和标签...

    javascript 代码大全

    JavaScript是Web开发中不可或缺的一部分,它提供了丰富的...以上这些是JavaScript中常见的对象和用法,它们构成了JavaScript交互的基础,熟练掌握这些知识能帮助开发者更好地进行网页动态效果的实现和用户交互的处理。

Global site tag (gtag.js) - Google Analytics