我期待更改輸入值而不使用設置element.value
。也就是說,在不替換元素中的整個值的情況下編輯該值。使用Javascript更改輸入值而不會覆蓋值
例如,去除從輸入字段的第一個字符:
this.value.substring(1)
返回一個值,而不是直接修改串,在那裏的值所以沒有影響。
我試過把字符串當作一個數組來處理,但this.value.shift()
和Array.prototype.shift.apply(this.value, [])
都沒有工作,這並不令人感到意外。
這裏的最終原因是改變輸入值而不影響插入位置。是的,我知道我可以在設置輸入值後手動設置插入符號的位置,但這會創建它自己的錯誤行爲,我試圖完全避開。
再次,變化值(除去或在任何給定位置插入字符)中的文本輸入:
沒有直接
設置element.value沒有設置或修改插入位置
這甚至可能嗎?
JavaScript中的字符串是不可變的,所以您只能重新分配字符串屬性/變量。您唯一的解決方法是在重寫值屬性 –
P.S.之後設置插入位置。這正是爲什麼大多數實現只求在輸入失去焦點後才修改value屬性的原因 –
@MikaelLennholm聽起來像是一個可靠的**答案**如果您想將其發佈爲... –