Javascript在不重写值的情况下更改输入值
我希望在不设置Javascript在不重写值的情况下更改输入值,javascript,input,Javascript,Input,我希望在不设置元素的情况下更改输入的值。值。也就是说,编辑值而不替换元素中的整个值 例如,从输入字段中删除第一个字符: this.value.substring(1)返回一个值,而不是直接修改字符串,因此对该值没有影响 我尝试过将字符串当作数组处理,但是this.value.shift()和array.prototype.shift.apply(this.value,[])都不起作用,这并不奇怪 这里的最终原因是在不影响插入符号位置的情况下更改输入值。是的,我知道我可以在设置输入值后手动设置插
元素的情况下更改输入的值。值。也就是说,编辑值而不替换元素中的整个值
例如,从输入字段中删除第一个字符:
this.value.substring(1)
返回一个值,而不是直接修改字符串,因此对该值没有影响
我尝试过将字符串当作数组处理,但是this.value.shift()
和array.prototype.shift.apply(this.value,[])
都不起作用,这并不奇怪
这里的最终原因是在不影响插入符号位置的情况下更改输入值。是的,我知道我可以在设置输入值后手动设置插入符号位置,但这会产生我试图完全避免的错误行为
再次更改文本输入中的值(在任何给定位置删除或插入字符):
不直接设置element.value
不设置或修改插入符号位置
这可能吗 Javascript中的字符串是不可变的,因此只能重新分配字符串属性/变量
在输入值的情况下,浏览器也会遇到逻辑问题,即在程序更改后知道插入符号应放在何处(它是否应保持在以前的位置,是否应移动,以及在这种情况下应放在何处?)
唯一的解决方法就是在重写值
属性后设置插入符号位置。尽管正如您所提到的,这样的解决方案通常是脆弱和有缺陷的,这正是为什么大多数实现在输入失去焦点后只修改值属性。javascript中的字符串是不可变的,所以您只能重新分配字符串属性/变量。您唯一的解决方案实际上是在重写值propertyP.S之后设置插入符号位置。这就是为什么大多数实现在输入丢失后只修改value属性的原因focus@MikaelLennholm如果你想把它贴出来的话,听起来是个可靠的答案……你明白了!(我通常不愿发布“对不起,不可能”的答案)@mikaellenholm我也是,但只要它是权威性的(string是不可变的,这是一个非常可靠的解释),拥有它是很好的