如何使用jQuery在文本字段中设置光标位置?我有一个包含内容的文本字段,我希望用户光标在关注字段时定位在某个偏移处.代码应该看起来像这样:
$('#input').focus(function() {
$(this).setCursorPosition(4);
});
Run Code Online (Sandbox Code Playgroud)
setCursorPosition函数的实现是什么样的?如果您有一个内容为abcdefg的文本字段,则此调用将导致光标定位如下:abcd**|**efg.
Java有一个类似的功能,setCaretPosition.javascript是否存在类似的方法?
更新:我修改了CMS的代码以使用jQuery,如下所示:
new function($) {
$.fn.setCursorPosition = function(pos) {
if (this.setSelectionRange) {
this.setSelectionRange(pos, pos);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
if(pos < 0) {
pos = $(this).val().length + pos;
}
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
}(jQuery);
Run Code Online (Sandbox Code Playgroud) 我找到了很多关于如何在contentEditable DIV中设置光标或插入位置的好的,交叉浏览器的答案,但是没有关于如何获取或找到它的位置......
我想要做的是在关键字中知道该div中插入符号的位置.
因此,当用户输入文本时,我可以随时知道其光标在div中的位置.
编辑:我在div内容(文本)中寻找INDEX,而不是光标坐标.
<div id="contentBox" contentEditable="true"></div>
$('#contentbox').keyup(function() {
// ... ?
});
Run Code Online (Sandbox Code Playgroud) 我正在开发一个移动银行应用程序,我有兴趣实时格式化货币金额输入.
我已经测试了autoNumeric插件和jQuery格式货币插件,但两者都在Android 2.*浏览器上有光标位置问题.
有没有人有与这个浏览器兼容的JavaScript解决方案?
在IE10中似乎存在一个错误,如果我将一个元素放在具有该contenteditable属性的另一个元素上,则编辑器的插入符将覆盖所有内容.
您可以在下面的图像和此jsFiddle中看到此行为.

我已经使用了大量的CSS属性,并且无法找到解决方案.它在其他浏览器中按预期工作.
我需要这个的原因是因为我正在设计一个WYSWIYG编辑器(TinyMCE fork)体验,工具栏在需要时向下滑动文本.此错误使插入符显示在工具栏的顶部.
我想到的唯一解决方案是模糊编辑器的焦点,并在工具栏消失时重新聚焦它.但是,这将阻止用户在激活工具栏时键入内容,并且还会导致跨浏览器的行为不一致.
这个bug有解决方法吗?
在此代码中,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) 如何在html输入框中输入数字时格式化数字?
所以例如,我想输入数字2000,当我键入第4位时,文本(当前显示在文本框中)将自动格式化为2,000(用逗号).
//my modified code based on Moob answer below
<input type="text" class="formattedNumberField" onkeyup="myFunc()">
//jQuery
$(".formattedNumberField").on('keyup', function(){
var n = parseInt($(this).val().replace(/\D/g,''),10);
$(this).val(n.toLocaleString());
});
function myFunc(){
// doing something else
}
Run Code Online (Sandbox Code Playgroud)
虽然这个代码工作完美,如Moob Fiddle所示,它不能在我的结束可能因为我在输入框中有另一个onkeyup事件???
我需要更改输入的插入位置,其中添加了给定的位数(示例).
app.controller('MainCtrl', function($scope, $element, $timeout, $filter) {
//$scope.val = '12';
$scope.$watch('val', function(newValue, oldValue) {
if (!isNaN(newValue)) {
if (newValue.length > 3) {
//Set Caret Position
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
有可能做这样的例子吗?
我需要例如:
输入:1234.
所以插入符号位置为2.
新数字:9
决赛:12934
提前致谢.
我有这样的输入:
<input value="My text" placeholder="Placeholder">
Run Code Online (Sandbox Code Playgroud)
当我在输入中输入内容时,占位符文本将消失,这是非常明显的.
现在,我想要做的是我希望占位符文本在用户输入时保留,以便您可以将占位符文本看作原始文本后面的背景文本:

编辑:我也希望能够使用JavaScript更改背景文本.
我试图在某种程度上复制Microsoft Office的Outlook等程序中出现的"自动更正"功能.
对于初学者,只要用户在一行的开头键入"a"(字母a和空格),我想将该文本更改为"*Agent ["
如果你在textarea中从上到下打字,我写下面的内容可以正常工作.但是,如果您在textarea中的任何其他位置键入文本,则会更改文本,然后光标移动到textarea的末尾.
我希望光标始终放在更改文本的末尾.
我有变量中的行号,currentLineNumber我知道光标需要在该行的第8个字符之后,但我不确定如何告诉它去那里
理想情况下喜欢喜欢的东西
function setCursor(row, position) {
//.... code to set cursor
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能做到这一点?我对javascript或jQuery解决方案持开放态度(虽然我发现jQuery有点难以阅读和理解)
如果有更好的方法来实现我的整体需求,我也会对此持开放态度.
如果你不明白这个问题,这里有一个jsFiddle
我在这里检查了其他问题,但他们没有回答我的问题.我想简单地捕获某些keyCode并将其替换为另一个.我正在处理角色,而不是白色空间,我不需要松散焦点等.
以下是我的代码.但是你可以用你的那些替换那些keyCodes(例如,当按下大写"A"时,它应该替换为零0等).想法是替换keyCode.
phrase.keypress(function(event)
{
if (event.shiftKey)
{
switch (event.keyCode)
{
// Cyrillic capitalized "?" was pressed
case 1053: event.keyCode = 1187; event.charCode = 1187; event.which = 1187; break;
// Cyrillic capitalized "?" was pressed
case 1054: event.keyCode = 1257; event.charCode = 1257; event.which = 1257; break;
// Cyrillic capitalized "?" was pressed
case 1059: event.keyCode = 1199; event.charCode = 1199; event.which = 1199; break;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我也试过keydown和keyup.它们不会改变keyCode.我怎样才能做到这一点?
PS如果可能的话,我正在寻找一种解决方案,它不会"event.preventDefault()并手动将所需的键插入输入字段,然后将光标移动到末尾".我想要更清洁和"正确"的解决方案.谢谢.