jQuery:同步两个文本字段而不使用val()

时间:2016-08-22 22:25:14

标签: javascript jquery

我的问题类似于thisthis问题。

然而,所有答案都使用jQuery的val函数来复制字段之间的值。

我无法使用val,因为源输入字段为readonly

因此,我想在源输入字段上捕获键盘事件,并根据这些事件填充目标文本字段。可以吗?

我希望这样的事情可以做到,但它不起作用。

$(".src").keyup(function(e){
    $(".target").trigger(e);
});

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你的问题没有多大意义。你说:

  

源输入字段将是只读的,因此只能听取键盘事件。

......但这没有多大意义。如果它是只读的,你就无法聚焦这个领域......这意味着你不能给它键盘事件。无论如何,您始终可以获取并设置字段的值,即使它是readonlydisabled。如果你不想使用jQuery的val() - 那么使用普通的JS。

$(".src").keyup(function(e){
    document.getElementsByClassName('target')[0].value = e.target.value;
});

更新:现在我想我理解你的问题。您的主要目标是通过隐藏聚焦字段并写入另一个字段来修改插入符号的颜色。不知道为什么你要这样做,因为我向你保证你的用户不在乎你冒着干扰用户体验的风险......当我输入这个消息时我甚至都没注意到插入符号的颜色Chrome ... buuuut,我有一种感觉,你仍然认为你的输入比其他人更特别。我觉得对于那些尝试将光标放在输入中较早点的用户来解决错误...我离题了。

创建单个输入,将其不透明度设置为0,而不是2个输入,并在每次更改时将整个值写入DIV。这有很多好处:

  1. 您可以获得输入的许多默认行为,而无需实际看到它(例如,光标悬停在桌面上,键盘导航等)。
  2. 您的表单仍然可以进行提交,而无需复制值或任何其他javascript怪异。
  3. 任何其他代码,验证脚本等都不需要更改 - 输入仍然获取值并发出所有事件。
  4. https://jsfiddle.net/2sp92bpy/1/