5

onChangeイベントに関連付けられた Javascript 関数があります。onPaste一部のブラウザーがドキュメントまたは要素レベルでサポートしていることを理解しています。イベントが「貼り付け」によって発生したかどうかを判断する方法はありますか-起動onChange時に設定されるグローバル変数を追加して、ルーチンの最後にリセットしようとしましたが、関数が取得されるという保証はありませんの前に呼び出されます。onPasteonChangeonPasteonChange

4

4 に答える 4

1

onChange の代わりに onKeyPress/onKeyUp/onKeyDown/onPaste を使用できます。

于 2010-11-08T15:25:54.110 に答える
1

これは私にとってはうまくいきました:

<input type="text" onchange="ValueChanged(event, this);" onpaste="this.setAttribute('pasted', '1');"/>


<script type="text/javascript">
function ValueChanged(evt, sender) {
    var blnCameFromPaste = ((sender.getAttribute("pasted") || "") == "1");
    if (blnCameFromPaste)
        alert("changed by paste");
    else
        alert("changed without paste");
    sender.setAttribute("pasted", "0")
}
</script>
于 2010-11-04T17:47:34.893 に答える
0

これを普遍的に行うことはできないと思います。この機能のテストの現在の状態を参照してください。

貼り付けを検出する 1 つの方法は、フィールドがフォーカスされてから「キーを押す」までの時間をカウントすることです。

于 2010-11-04T17:25:45.043 に答える
0

onchange イベントが発生するたびに、フィールドの値の現在の長さを以前の長さと比較し、現在の時刻と以前の時刻を比較します。人が入力できると思われる速度よりも速く文字が入力された場合、文字は貼り付けられているに違いありません。

于 2010-12-07T08:20:46.230 に答える