相关疑难解决方法(0)

如何从一开始就以字符形式在textarea中获取插入符号列(不是像素)的位置?

如何在<textarea>使用JavaScript中获得插入位置?

例如: This is| a text

这应该回来了7.

如何让它返回光标/选择周围的字符串?

例如:'This is', '', ' a text'.

如果突出显示"是"一词,那么它将返回'This ', 'is', ' a text'.

javascript textarea cursor caret

174
推荐指数
2
解决办法
16万
查看次数

如何在textarea中获得光标位置?

我有一个textarea,我想知道如果我在textarea的最后一行或textarea的第一行用我的光标用JavaScript.

我想到抓住第一个换行符和最后一个换行符的位置,然后抓住光标的位置.

var firstNewline = $('#myTextarea').val().indexOf('\n');
var lastNewline = $('#myTextarea').val().lastIndexOf('\n');

var cursorPosition = ?????;

if (cursorPosition < firstNewline)
    // I am on first line.
else if (cursorPosition > lastNewline)
    // I am on last line.
Run Code Online (Sandbox Code Playgroud)
  • 是否可以抓住textarea中的光标位置?
  • 您是否有更好的建议,以了解我是否在textarea的第一行或最后一行?

除非JavaScript简单或简单,否则首选jQuery解决方案.

html javascript jquery textarea input

61
推荐指数
4
解决办法
11万
查看次数

我可以有条件地更改在按键上输入的输入字符吗?

是否可以更改已在按键上输入的字符,而无需手动操作?

例如,如果我想根据某些条件强制使用大写字母,那么执行以下操作会很好:

function onKeypressHandler(e)
{
    if ( condition )
    {
        e.which -= 32;
    }
}
Run Code Online (Sandbox Code Playgroud)

但当然这不起作用.

注意:这不是一个全面的大写字母,而只是特定的字符.

也许我想说if ( e.which >= 97 && e.which <= 102 )或者if ( Wind.Direction == 'South' )其他什么 - 条件本身并不重要,但是大写只能应用于当前字符而不是整个输入.


我可以通过手动附加更改后的角色来实现,但这是一种丑陋而混乱的方式,并且可能比它更慢.

function onKeypressHandler(e)
{
    if ( condition )
    {
        $j(this).val( $j(this).val() + String.fromCharCode( e.which - 32 ) );
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用此方法的一个特定缺陷 - 如果选择所有输入文本并输入密钥,如果它落入此中,则它不会删除现有内容,而只是附加到用户想要删除的内容.(需要调查检测任何选定的文本来解决这个问题,这使得这个问题变得更加丑陋.)

谁能提供更好的解决方案?

javascript jquery keypress

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

如何让window.getselection用于输入type = text字段

我有一个满足感的div,就像这样:

<div id="test" contentEditable="true" style="width: 600px; height:300px;">Lorem ipsum dolor sit amet</div>
Run Code Online (Sandbox Code Playgroud)

我使用以下代码:

<input type="button" value="Click me" onclick="alert(window.getSelection().focusOffset.toString());"></button>
Run Code Online (Sandbox Code Playgroud)

当我在div中移动插入符号时单击按钮,返回div中插入符号的实际位置(偏移量).

问题是当我用输入类型=文本或密码控件替换contenteditable div,并保持contenteditable属性= true,然后单击按钮,我总是得到零.为什么是这样?

谢谢你的期待.

html javascript caret contenteditable

13
推荐指数
1
解决办法
7185
查看次数

IE的document.selection.createRange不包括前导或尾随空行

我正在尝试从textarea中提取确切的选择和光标位置.像往常一样,大多数浏览器中的简单操作都不在IE中.

我正在使用这个:

var sel=document.selection.createRange();
var temp=sel.duplicate();
temp.moveToElementText(textarea);
temp.setEndPoint("EndToEnd", sel);
selectionEnd = temp.text.length;
selectionStart = selectionEnd - sel.text.length;
Run Code Online (Sandbox Code Playgroud)

其中99%的时间都有效.问题是TextRange.text不返回前导或尾随换行符.因此,当光标在段落之后是几个空行时,它会在前一段的末尾产生一个位置 - 而不是实际的光标位置.

例如:

the quick brown fox|    <- above code thinks the cursor is here

|    <- when really it's here
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一解决方法是在选择之前和之后临时插入一个字符,抓取实际选择,然后再次删除那些临时字符.这是一个黑客,但在一个快速实验看起来它会起作用.

但首先,我想确定没有更简单的方法.

javascript internet-explorer dom

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

在没有焦点的情况下替换textarea中的文本

我想替换所选文本(如果没有选择任何内容,则在光标位置后插入新文本).新文本从另一个文本框输入.
我希望能够插入新文本而不先在textarea中单击(聚焦).
含义:首先选择要在textarea中替换的文本,然后在文本框中输入新文本并单击按钮.

<textarea id='text' cols="40" rows="20">
</textarea>

<div id="opt">
    <input id="input" type="text" size="35">
    <input type="button" onclick='pasteIntoInput(document.getElementById("input").value)' value="button"/>    
</div>


function pasteIntoInput(text) { 
  el=document.getElementById("text");
  el.focus();    
  if (typeof el.selectionStart == "number"&& typeof el.selectionEnd == "number") { 
    var val = el.value; 
    var selStart = el.selectionStart;
    el.value = val.slice(0, selStart) + text + val.slice(el.selectionEnd);        
    el.selectionEnd = el.selectionStart = selStart + text.length;
  } 
  else if (typeof document.selection != "undefined") {
    var textRange = document.selection.createRange();        
    textRange.text = text;       
    textRange.collapse(false);        
    textRange.select();
  } 
}  
Run Code Online (Sandbox Code Playgroud)

在线示例: 链接文本

html javascript textarea selection

6
推荐指数
1
解决办法
4997
查看次数

Internet Explorer TextRange中的字符偏移量

据我所知,没有简单的方法可以从Internet Explorer中的TextRange对象中检索字符偏移量.W3C Range对象具有一个节点,以及该节点内文本的偏移量.IE似乎只有像素偏移.有创建,扩展和比较范围的方法,因此可以编写一个算法来计算字符偏移量,但我觉得我必须遗漏一些东西.

那么,计算Internet Explorer TextRange开头的字符偏移量的最简单方法是什么?

html javascript internet-explorer dhtml selection

4
推荐指数
2
解决办法
8233
查看次数

哪里可以找到JavaScript文档?

我认为这是一个https://developer.mozilla.org/en/JavaScript/Reference但是对于像Textarea对象将拥有的属性/函数这样的东西,我在哪里可以得到它?

我知道textarea有属性如selectionStart,selectionEnd但其他什么?我在哪里可以找到该信息?

javascript

4
推荐指数
1
解决办法
227
查看次数

有没有办法在IE的输入框中获取所选文本的偏移量?

在Firefox中,您只需调用:

myInputTextField.selectionStart或myInputTextField.selectionEnd

获取输入框中所选文本的第一个和最后一个索引.

在IE中,我知道你可以调用document.selection.createRange()来调整选择.然而,对于我的生活,我没有找到任何代表选择中的字符偏移的值.

我错过了什么吗?有没有办法在IE中获得相同的价值?

谢谢!

亚历克斯

html javascript internet-explorer web-applications

3
推荐指数
1
解决办法
1515
查看次数

显示谷歌浏览器中键入的键盘字符

我正在开发一个javascript键盘,试图让用户输入各种非洲语言.目前,这在IE8和Firefox中运行良好但不是谷歌浏览器,我实际上只是坚持这个.我想要完成的是例如,键入(在我的物理键盘上)' q '(keyCode = 113)并获得' ɛ '(keyCode = 603)作为输出,但目前,我的代码在谷歌浏览器中没有任何作用.我的代码的相关部分如下:

var k_layouts = {};  
k_layouts.Akan = {88:390,113:603};//keyCode mappings for Akan language    
k_layouts.Ga = {120:596,81:400};//keyCode mappings for Ga language  
var current_layout = "";  

//function that maps the keyCode of a **typed** key to that of the **expected** key    
function map_key_code(keycode){  
    if(k_layouts[current_layout] && k_layouts[current_layout][keycode])  
        return k_layouts[current_layout][keycode];  
    return keycode;  
}  

//function that actually changes the keyCode of a **typed** key to the **expected** value
function handle_keypress(ev){  
    var ev = ev || window.event;  
    if(ev.bubbles != …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome

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