2012-01-23 10 views
2

私の現在のプロジェクトでは、ユーザーが商品IDのようないくつかの数値を入力するテキストボックスがあります - 例:12345-123-1234567-12345JavaScriptでのCRTL + V(貼り付け)機能の自動書式設定asp.net

私は関係なく、テキストの存在形式のテキストの書式を設定し、ユーザーがテキストに貼り付けるはCtrl +Vを押すと、私のaspxページではJavaScriptを持っていると思います。

例えば、テキストが12345---123-123456712345のようにフォーマットされている場合、この関数はそれを12345-123-1234567-12345にフォーマットします。

EDIT:

はあなたSuggetionをしようとしましたが、それは働いていません。私はそれはあなたが「のonchange」イベント(単にノートを使用することができ、そのテキストが変更されるたびテキストボックスを更新するには

Microsoft JScript runtime error: Unable to set value of the property 'OnTextChanged': object is null or undefined

+0

迅速な正規表現はそれを扱うことができ、 "[^(0-9)]"。それらのすべてを ""に置き換えてください。その間にダッシュが必要な場合は、繰り返し実行して後で追加することができます – annonymously

+0

ダッシュを置き換える/追加することは大したことではありません...私はどのようにCRTL + Vをjavascriptでキャプチャしますか?と言っているように、JSにはかなり新しいです...あまり確かではありません。あなたがedxampleを投稿することはできますか?もしあれば。 – Rahul

答えて

2

を言ってerroringています。この方法のように...コードサンプルの下

<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> 

を試してみました

最初に、あなたのテキストボックスにユニークなid-asp.netバージョン4を与えてください。フォームの要素idには「混乱しない」ものを与える機能があります。 onchangeイベントを設定します。

var tb = document.getElementById("textBoxId"); 
tb.onchange = function() { 
    //I think you want: 
    this.value = this.value.replace("---", "-"); 
}; 

EDIT

あなたはkeyupイベントをキャッチし、ユーザーは単にコントロール-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

+0

アダム:私はそれを試してみて、あなたがEDITで削除したテキストをもう一度追加してください...いくつかのアイデアを得ていました:) – Rahul

+0

@Rahul - 削除されたテキストはあまり価値がありませんでした。私はちょうどこれを設定していました。値はいくつかのローカル変数に無意味です。 –

+0

Adamに感謝しますが、私はこの関数を別のJS関数の中でどこで呼びますか? – Rahul

関連する問題