javascript - 如何使textarea可编辑?

标签 javascript javascript-events textarea

我有一个textarea可以将英语转换为印地语onkeyup事件。但是,当我将插入符号向后移动以进行编辑时,我键入的第一个字母将转换为北印度语,而插入符号将移动到字符串的末尾。是否可以将插入符号存储在textarea中的同一点,以使其不会移动到字符串的末尾?

最佳答案

这样做的问题是,您每次按下键都会覆盖textarea的值,这就是使插入符号移动的原因。

在替换文本之前,您将需要获得插入符号的值,并在替换后再次设置它。

Stackoverflow Answer: Get Caret Position-以下链接答案中的代码未更改

function getCaret(el) { 
  if (el.selectionStart) { 
    return el.selectionStart; 
  } else if (document.selection) { 
    el.focus(); 

    var r = document.selection.createRange(); 
    if (r == null) { 
      return 0; 
    } 

    var re = el.createTextRange(), 
        rc = re.duplicate(); 
    re.moveToBookmark(r.getBookmark()); 
    rc.setEndPoint('EndToStart', re); 

    return rc.text.length; 
  }  
  return 0; 
}


Stackoverflow Answer: Set Caret Position-以下链接答案中的代码未更改

function SetCursorPosition(pos)
{
    // HERE txt is the text field name
    var obj=document.getElementById('<%= txt.ClientID %><%= txt.ClientID %>');

    //FOR IE
    if(obj.setSelectionRange)
    {
        obj.focus();
        obj.setSelectionRange(pos,pos);
    }

    // For Firefox
    else if (obj.createTextRange)
    {
        var range = obj.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
    }
}


通过避免替换按键事件中的所有文本并将其移至按下按钮,模糊/散焦或其他某种方式,还有其他一些方法可以解决此问题。这使您不必担心插入符位置重置到最后。

我看到转移到另一个事件以触发文本更改的唯一真正缺点是,它不是瞬时的。

关于javascript - 如何使textarea可编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/796903/

相关文章:

javascript - 对于 JavaScript 自动完成搜索框,我们必须使用 "input"事件处理程序吗?

php - 使用ajax将文本区域信息存储到数据库中。工作正常,除非我以任何方式编辑文本区域。信息仍然被存储,但 XMLHTTP 永远不会关闭

javascript - 使用 jQuery 在 textarea 中插入脚本标签

javascript - 在 asp.net 中,Ajax 返回数据表总是出现错误部分

javascript - Rails:找不到 JavaScript 运行时。有关可用运行时的列表,请参阅 https://github.com/sstephenson/execjs。 (ExecJS::RuntimeUnavailable)

javascript - 是否可以将双击视为 Javascript 中的单击?

javascript - 如何将文本附加到在 React JS 中创建的文本区域?

javascript - 只有手机safari打不开页面,没有网络消息

javascript - 'NextHandleFunction' 类型的参数不可分配给 'PathParams' 类型的参数

javascript-events - SproutCore以编程方式触发MenuPane中的项目选择