【问题标题】:JavaScript/jQuery - replace text in input textJavaScript/jQuery - 替换输入文本中的文本
【发布时间】:2012-03-05 18:58:20
【问题描述】:

假设我们有一个输入字段:<input type="text" id="id0"/>。我想用我的文本动态替换当前选择的文本。使用 jQuery 或 javascript 实现这一目标的最佳方法是什么?

更新:

我的意思是:用户键入文本并选择其中的一部分,然后按下按钮将所选部分替换为另一个指定的文本。

问候,拉法尔

【问题讨论】:

  • 所以,您需要选择一些文本并找出它是什么 - 用其他文本替换它...在输入框中?
  • 您要替换的时间和范围是什么?需要触发任何事件??如果我给你html和js代码会很有帮助
  • 你是按按钮还是换什么?它如何知道何时进行替换?

标签: javascript jquery text input replace


【解决方案1】:

大多数浏览器支持文本输入和文本区域的selectionStartselectionEnd 属性。但是,IE Rangy inputs plug-in,它规范了 IE

$("#id0").replaceSelectedText("SOME NEW TEXT");

如果文本框没有焦点,则需要先聚焦:

$("#id0").focus();

【讨论】:

  • 该插件使用document.execCommand('insertText') 替换内容(这很好,因为它正确支持浏览器撤消机制),但这在 IE11 中不起作用。
  • @flu:是的,我知道。 IE 有一个后备方案。但是,这确实意味着 IE 中的撤消堆栈已损坏。
  • 你是对的。我正要为那个撤消错误开一张票。
  • @flu 在 IE 错误跟踪器或插件中?
  • 在 IE 错误跟踪器中。当前,当输入获得值Previous 并且您以编程方式设置为New(通过.valuejQuery.val())然后按CTRL+Z 或从上下文菜单中选择undo,该值将更改为NewPrevious.
【解决方案2】:
$('#id0').val('somenewtexthere');

【讨论】:

  • Mike,我想动态替换当前选择,而不是整个输入值。
【解决方案3】:

我不确定这是否对您有帮助,但也许是这样:

  var myMessage="My Text";
  $('#id0').val(myMessage);

【讨论】:

    【解决方案4】:

    如果您想在键入时清除它并在离开时返回其文本,请使用此

    $('#id0').focus(function() { $(this).val(''); });

    $('#id0').blur(function() {$(this).val('  Your text    '); });  
    

    【讨论】:

      【解决方案5】:

      jQuery("input#id0").attr("value","my text");

      【讨论】:

      • -1 因为使用 jQuery 而不是简写 + 使用 .attr() 因为有一个提供更多功能的函数 .val() 是正确的方法。
      • 有些框架你必须使用 jQuery 而不是 $,我使用了另一个版本 (attr),因为有人用 val 给出了答案。我的回答是正确的,没有错误。我认为你给我-1是刻薄的,我试图在这里提供帮助。
      • 使用 .attr() 对此不好。在这里查看原因:stackoverflow.com/a/3843317/851498。例如,这会导致某些表单值在提交时更改(attr() 更改了一些 jQuery 属性,而 val() 更改了 DOM 元素值)。我不在乎jQuery :)。
      • 在某些项目中是的,但在这里我们给出的答案是最新的,并且没有使用任何不好的做法或已弃用的功能或习惯。所以 -1 是正确的。
      猜你喜欢
      • 2014-05-24
      • 2011-02-02
      • 2016-04-26
      • 2011-08-02
      • 2019-08-01
      • 2015-10-11
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      相关资源
      最近更新 更多