Javascript更改输入值而不覆盖值

时间:2017-06-29 13:53:39

标签: javascript input

我希望更改输入的值,不用设置element.value。也就是说编辑值而不替换元素中的整个值。

例如,从输入字段中删除第一个字符:

this.value.substring(1)返回一个值,而不是直接修改字符串,因此对该值没有影响。

我已经尝试将字符串视为数组,但this.value.shift()Array.prototype.shift.apply(this.value, [])都不起作用,这并不太令人惊讶。

这里的最终原因是在不影响插入位置的情况下改变输入值。是的,我知道我可以在设置输入值后手动设置插入位置,但这会产生我自己的错误行为,我试图完全绕过它。

再次,在文本输入中更改值(删除或插入任何给定位置的字符):

没有直接设置element.value

设置或修改插入位置

这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

Javascript中的字符串是不可变的,因此您只能重新分配字符串属性/变量。

在输入值的情况下,浏览器在编程更改后应该知道插入符号的位置(如果它保留在之前的位置,是否应该移动并且在情况在哪里?)。

您唯一的解决方案是在重写value属性后设置插入位置。虽然正如你所提到的,这样的解决方案通常都很脆弱,但这正是大多数实现仅仅在输入失去焦点后只修改value属性 的原因。