私の現在のプロジェクトでは、ユーザーがいくつかの数値ID(製品IDなど)を入力するテキストボックスがあります-例:
12345-123-1234567-12345
。
私のaspxページに、ユーザーがCtrl + Vを押してテキストを貼り付けると、テキストの現在のフォーマットに関係なく、そのテキストをフォーマットするJavaScriptが必要です。
たとえば、テキストが
12345---123-123456712345
のようにフォーマットされている場合、関数はそれを
12345-123-1234567-12345
にフォーマットします。
編集:
提案を試みましたが、機能していません。私はこのようにしてみました...コードサンプルの下
<asp:TextBox ID="TextBox1" runat="server" Text="" ></asp:TextBox>
<br />
<br />
<script language="JavaScript" type="text/javascript">
var tb = document.getElementById("TextBox1");
tb.OnTextChanged = function () {
this.value = this.value.replace("---", "-");
};
</script>
それは言ってエラーです
Microsoft JScriptランタイムエラー:プロパティの値を設定できません
'OnTextChanged':オブジェクトがnullまたは未定義です
テキストが変更されるたびにテキストボックスを更新するには、「onchange」イベントを使用できます(フォーカスがテキストボックスを離れるまで変更は発生しないことに注意してください)
最初に、テキストボックスに一意のIDを指定します。asp.netバージョン4には、フォーム要素に「影響を受けない」IDを指定できる機能があり、次にonchangeイベントを設定します。
var tb = document.getElementById("textBoxId");
tb.onchange = function() {
//I think you want:
this.value = this.value.replace("---", "-");
};
編集
keyup
イベントをキャッチして、ユーザーがcontrol-vを押したかどうかを確認できます。その場合は、テキストボックスの現在の値を変更できます。これは、ユーザーが右クリックして貼り付けた場合は機能しないことに注意してください。
これを処理する最良の方法は、テキストボックスがどのように変更されても機能するonchangeイベントを使用することです。
document.getElementById("tb").onkeyup = function (e) {
var key = e.which || e.keyCode;
if (e.which === 86 && e.ctrlKey)
alert("you pasted " + this.value);
};
DEMO