我正在使用一个明确的跨浏览器解决方案,当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(如何将光标移动到可信实体的末尾)
我有一个contenteditable
元素,每当我输入一些东西并点击ENTER
它创建一个新的<div>
并将新的行文本放在那里.我不喜欢这一点.
是否有可能防止这种情况发生或至少只是用一个<br>
?
这是演示http://jsfiddle.net/jDvau/
注意:这不是firefox中的问题.
我找到了很多关于如何在contentEditable DIV中设置光标或插入位置的好的,交叉浏览器的答案,但是没有关于如何获取或找到它的位置......
我想要做的是在关键字中知道该div中插入符号的位置.
因此,当用户输入文本时,我可以随时知道其光标在div中的位置.
编辑:我在div内容(文本)中寻找INDEX,而不是光标坐标.
<div id="contentBox" contentEditable="true"></div>
$('#contentbox').keyup(function() {
// ... ?
});
Run Code Online (Sandbox Code Playgroud) 我需要contenteditable
像在Gmail备注小部件上一样将插入符移动到节点的末尾.
我在StackOverflow上读取了线程,但这些解决方案基于使用输入,它们不适用于contenteditable
元素.
我想#
在用户输入时使用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)在此代码中,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) 在我的项目中,我试图将插入位置始终设置为文本的末尾.我知道这是默认行为,但是当我们动态添加一些文本时,插入符号位置会更改为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)
我尝试添加,setStart
并setEnd
在此链接中提到,但没有用.
我想将可编辑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) 我正在使用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) 我有这个标记
<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
跨度.
我需要移动回出来后的.field
父contentEditable
.
如何通过javascript(如果需要使用jQuery)来实现?
当插入符号位于.value范围内时,它将尝试在keydown事件上触发它,如图所示.
javascript ×9
jquery ×7
html ×5
caret ×3
css ×1
dom-events ×1
jquery-ui ×1
mobile ×1
position ×1
regex ×1