0
の値をに設定しないで、element.value
の値を変更しようとしています。つまり、要素内の値全体を置き換えずに値を編集します。値を変更せずに入力値を変更するJavaScript
を例えば、入力フィールドから最初の文字除去:
this.value.substring(1)
する代わりに、直接文字列を変更する値を返さないので、そこの値には影響。
私は配列のような文字列を扱おうとしましたが、どちらもthis.value.shift()
でもArray.prototype.shift.apply(this.value, [])
でも動作しません。これはあまり驚くべきことではありません。
究極の理由は、キャレット位置に影響を与えずに入力値を変更することです。はい、私は手動で入力値を設定した後にキャレットの位置を設定することができますが、それは私が完全に回避しようとしている独自のバグの動作を作成します。再び
、テキスト入力の変化値(削除または任意の位置に文字を挿入):なし
を設定せずに直接
element.valueを設定またはキャレット位置
を変更しますこれも可能ですか?
JavaScriptの文字列は不変なので、文字列のプロパティ/変数のみを再割り当てできます。これに対する唯一の解決策は、実際には値のプロパティを書き換えた後でキャレットの位置を設定することです。 –
P.S.これは正確に入力がフォーカスを失った後に値のプロパティを変更するだけのほとんどの実装に頼っています –
@MikaelLennholmはそのようなものを投稿したい場合は** ** ** **固体のように聞こえるように聞こえます。 –