相关疑难解决方法(0)

在contentEditable <div>上设置光标位置

我正在使用一个明确的跨浏览器解决方案,当contentEditable ='on'<div>重新获得焦点时,将光标/插入位置设置为最后的已知位置.看来内容可编辑div的默认功能是每次单击它时将插入符/光标移动到div中文本的开头,这是不合需要的.

我相信当他们离开div的焦点时我必须在变量中存储当前光标位置,然后当他们再次聚焦时重新设置它,但是我无法将它组合在一起,或者找不到工作代码示例.

如果有人有任何想法,工作代码片段或样本我很乐意看到它们.

我还没有任何代码,但这里有我所拥有的:

<script type="text/javascript">
// jQuery
$(document).ready(function() {
   $('#area').focus(function() { .. }  // focus I would imagine I need.
}
</script>
<div id="area" contentEditable="true"></div>
Run Code Online (Sandbox Code Playgroud)

PS.我已经尝试过这个资源,但它似乎不适用于<div>.也许只适用于textarea(如何将光标移动到可信实体的末尾)

html javascript jquery contenteditable cursor-position

139
推荐指数
7
解决办法
12万
查看次数

阻止在ENTER上添加<div> - Chrome

我有一个contenteditable元素,每当我输入一些东西并点击ENTER它创建一个新的<div>并将新的行文本放在那里.我不喜欢这一点.

是否有可能防止这种情况发生或至少只是用一个<br>

这是演示http://jsfiddle.net/jDvau/

注意:这不是firefox中的问题.

html javascript jquery google-chrome contenteditable

112
推荐指数
11
解决办法
8万
查看次数

在contentEditable div中获取插入位置

我找到了很多关于如何在contentEditable DIV中设置光标或插入位置的好的,交叉浏览器的答案,但是没有关于如何获取或找到它的位置......

我想要做的是在关键字中知道该div中插入符号的位置.

因此,当用户输入文本时,我可以随时知道其光标在div中的位置.

编辑:我在div内容(文本)中寻找INDEX,而不是光标坐标.

<div id="contentBox" contentEditable="true"></div>

$('#contentbox').keyup(function() { 
    // ... ? 
});
Run Code Online (Sandbox Code Playgroud)

javascript caret contenteditable cursor-position

109
推荐指数
8
解决办法
10万
查看次数

如何将光标移动到可信实体的末尾

我需要contenteditable像在Gmail备注小部件上一样将插入符移动到节点的末尾.

我在StackOverflow上读取了线程,但这些解决方案基于使用输入,它们不适用于contenteditable元素.

javascript contenteditable cursor-position

73
推荐指数
7
解决办法
5万
查看次数

检查按下的空格,然后使用多语言的jquery添加diez标签

我想#在用户输入时使用jquery在压缩空间后添加Diez标签.我从codepen.io 创建了这个DEMO.

在这个演示中,当您编写示例(how are you)时,javascript代码将像这样(#how #are #you)更改它.

我正在检查用function addHashtags(text) { ... }这个函数添加#(diez)标签的单词.

1-)所以通常它适用于英文字符.但我想做多种语言.现在的问题是我输入像(ü???öç)这样的土耳其字符.那么当我用土耳其语字写的时候发生了什么.你可以用这个词来测试它.当我写(üzüm)或(hüseyin)时,javascript应该更改像(#üzüm #hüseyin)这样的单词,但事实并非如此.它正在添加像这样(#ü#zü#m #hü#seyin).在此输入图像描述 (解决了)

2-)另一个问题是其他一些语言.当用户键入阿拉伯语,阿塞拜疆语,日语等时,Javascript不会添加#(diez)标签.当我写(????????????)或(?????????????????????)等时,没有任何反应.这对我来说是个大问题.我需要一个解决方案.在此输入图像描述(解决了)

3-)如果您查看DEMO,您可以看到我使用过textInput.它不起作用,Firefox但在移动设备上工作.因此,如果我使用keypress代码正在工作FireFox但不在移动设备上工作.我的代码应该适用于所有设备.在此输入图像描述 (解决了)

$(document).ready(function() {
   window.mobilecheck = function() {
      var check = false;
      (function(a) {
         if (
            /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(
               a
            ) ||
            /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 …
Run Code Online (Sandbox Code Playgroud)

javascript css regex mobile jquery

20
推荐指数
2
解决办法
698
查看次数

CreateTextRange无法在Chrome中使用

在此代码中,createRange无法在Chrome中使用.在IE中,它正在运行.请帮忙解决这个问题.是否有任何其他属性可以像创建范围一样工作.这样对我的项目很有帮助.

<script language=javascript>

    var isSelected;
    function markSelection ( txtObj ) {
      if ( txtObj.createTextRange ) {
        txtObj.caretPos = document.selection.createRange().duplicate();
        isSelected = true;
      }
    }

    function insertTag ( txtName, enclose ) {
        if(document.f_activity_email == null) {
            var tag = document.getElementById('EmailTokenID').value;
        }
        else {
            var formC = document.f_activity_email;
            var tag = formC.EmailTokenID.value;
        }
        var closeTag = tag;
        if ( enclose ) {
            var attribSplit = tag.indexOf ( ' ' );
            if ( tag.indexOf ( ' ' ) > -1 ) …
Run Code Online (Sandbox Code Playgroud)

javascript compatibility google-chrome

14
推荐指数
3
解决办法
3万
查看次数

将插入位置始终设置为以可信的div结束

在我的项目中,我试图将插入位置始终设置为文本的末尾.我知道这是默认行为,但是当我们动态添加一些文本时,插入符号位置会更改为Chrome和firefox中的起点(IE很好,太棒了).

无论如何要使它在chrome和firefox中正常工作?

这是小提琴

<div id="result" contenteditable="true"></div>
<button class="click">click to add text</butto>
Run Code Online (Sandbox Code Playgroud)
var result = $('#result');
$('.click').click(function () {
    var preHtml = result.html();
    result.html(preHtml + "hello");
    result.focus();
});
Run Code Online (Sandbox Code Playgroud)

我尝试添加,setStartsetEnd在此链接中提到,但没有用.

html javascript jquery position caret

11
推荐指数
1
解决办法
2万
查看次数

.preventDefault()无法正常工作.('input',function {})

我想将可编辑div中的字符数限制为10.在用户达到限制后,我想使用.preventDefault()方法来保护div免受其他字符的影响.你能救我吗?JSFiddle https://jsfiddle.net/7x2dfgx6/1/ HTML

<div class="profileInfo" id="About" style="border:solid;" contenteditable="true">OOOOO</div>
Run Code Online (Sandbox Code Playgroud)

JQuery的

    jQuery(document).ready(function($){

    const limit = 10;
    rem = limit - $('#About').text().length;
    $("#counter").append("You have <strong>" + rem + "</strong> chars left.");
    $("#About").on('input', function(event) {
        var char = $('#About').text().length;
        rem = limit - char;
        $("#counter").html("You have <strong>" + rem + "</strong> chars left.");
        if(char>limit)
        {
            event.preventDefault();
            //TODO
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

html javascript jquery event-propagation dom-events

10
推荐指数
2
解决办法
1万
查看次数

自动完成与contenteditable div而不是textarea似乎不起作用

我正在使用Andrew Whitaker的autocomplete插件,在这个问题中也引用了: jquery autocomplete @mention

如果我使用contenteditable div而不是textarea,这不起作用.这是我的代码:

<div id="MyText" contenteditable="true"></div>?

$("#MyText").bind("keydown", function (event) {
        if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) {
            event.preventDefault();
        }
    }).autocomplete({
        minLength: 0,
        source: function (request, response) {
            var term = request.term,
                results = [];
            if (term.indexOf("@") >= 0) {
                term = extractLast(request.term);
                if (term.length > 0) {
                    results = $.ui.autocomplete.filter(tags, term);
                } else {
                    results = [startTyping];
                }
            }
            response(results);
        },
        focus: function () {
            return false;
        },
        select: function (event, ui) {
            if (ui.item.value !== …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-ui jquery-plugins

7
推荐指数
1
解决办法
8515
查看次数

在嵌套的contentEditable之后设置光标位置

我有这个标记

<div contentEditable="true">
    Some other editable content
    <div class="field" contentEditable="false">
        <span class="label">This is the label</span>
        <span class="value" contentEditable="true">This is where the caret is</span>
    </div>
    <!-- This is where I want the Caret -->
</div>
Run Code Online (Sandbox Code Playgroud)

插入符号目前处于.field跨度.

我需要移动回出来.fieldcontentEditable.

例

如何通过javascript(如果需要使用jQuery)来实现?

当插入符号位于.value范围内时,它将尝试在keydown事件上触发它,如图所示.

html jquery caret contenteditable

7
推荐指数
1
解决办法
3536
查看次数