Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在不重写值的情况下更改输入值_Javascript_Input - Fatal编程技术网

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是不可变的,这是一个非常可靠的解释),拥有它是很好的