javascript - JavaScript asp.netでのCTRL + V(貼り付け)関数の自動フォーマット

javascript asp.net

私の現在のプロジェクトでは、ユーザーがいくつかの数値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
関連記事

javascript - JavaScriptで2つの変数を結合する

javascript - JQueryを使用したSongkick API

javascript - 列に表示されるデータをフォーマットする方法

javascript - JavaScriptで3次元配列をソートする

asp.net - これは、WebDriverを使用してJavaScript警告ダイアログを処理する正しい方法ですか?

javascript - Google Fusion Tablesで変更を行うことができません(挿入、テーブルの追加など)

javascript - Dojoスパイダーチャートの固定軸

c# - ASP.NET MVC3、Razor-JavaScriptでのViewBagまたはURL変数の使用

javascript - jQueryを使用してiframe URLを変更する

javascript - リスト項目をdivの上に表示する