javascript - 如何在文本区域或文本字段中将一些特殊的词设置为只读

标签 javascript jquery

我有两个字段。文本区域和输入类型文本。其中有一些标签,如 <firstname>我想让这些用户无法编辑。如果他试图删除整个标签将被删除。这是 Js fiddle

我正在尝试这个

$(function () {
            var tb = $("#t").get(0);
            $("#t").keydown(function (event) {
                var start = tb.selectionStart;
                var end = tb.selectionEnd;
                var reg = new RegExp("(<.+?>)", "g");
                var amatch = null;
                while ((amatch = reg.exec(tb.value)) != null) {
                    var thisMatchStart = amatch.index;
                    var thisMatchEnd = amatch.index + amatch[0].length;
                    if (start <= thisMatchStart && end > thisMatchStart) {
                        event.preventDefault();
                        return false;
                    }
                    else if (start > thisMatchStart && start < thisMatchEnd) {
                        event.preventDefault();
                        return false;
                    }
                }
            });
        });

但它不起作用。

它仅适用于如果 cursur 位于标记的开头则它不可编辑。但是如果 cursur 在标签的末尾,那么这是可编辑的。我想让它完全不可编辑。

最佳答案

完成了。我只是将 +1 添加到开始和结束选择器。它有效。这是工作链接JSfiddle html代码是

<input type="text" class="tag-check" value="<tagname> this is just a check" >
<textarea id="t" class="tag-check" rows=5 cols="80">Hello this is a test <companyname> 

        <lastname> this part is editable <firstname>     

    </textarea>

js代码是

$(function () {


            $(".tag-check").keydown(function (event) {
                var tb = $(this).get(0);
                var start = tb.selectionStart;

                var end = tb.selectionEnd;
                var reg = new RegExp("(<.+?>)", "g");
                var amatch = null;
                while ((amatch = reg.exec(tb.value)) != null) {
                    var thisMatchStart = amatch.index-1;
                    var thisMatchEnd = amatch.index + amatch[0].length+1;
                    if (start <= thisMatchStart && end > thisMatchStart) {
                        event.preventDefault();
                        return false;
                    }
                    else if (start > thisMatchStart && start < thisMatchEnd) {
                        event.preventDefault();
                        return false;
                    }
                }
            });
        });

关于javascript - 如何在文本区域或文本字段中将一些特殊的词设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29999481/

相关文章:

javascript - 我可以将 'ban' javascript 扩展到什么程度?鉴于没有 js 功能非常复杂

c# - 使用 Datapager 在 asp.net 中分页 - 下一个、上一个按钮

javascript - 仅选择 JointJS 中的特定单元格

jquery - 使用jquery制作圆形复选框

javascript - Jquery:通过委托(delegate)事件触发时更改下拉列表的值

javascript - 两个引用类似功能的按钮不适用于 html 和 javascript ajax

javascript - 我的 onbeforeunload 函数出了问题,但我找不到它

javascript - 将返回的数据从导出函数传递到 React 组件

JavaScript - 如何从 JSON 对象中获取特定值

javascript - 将一个物体分成三部分