2012-01-20 5 views
0

数字とピリオド(ただし1つのピリオドのみ)はカンマなし、アルファは許可しません。警告付きの速達正規表現

したがって、ユーザーは、可能な場合、私はまた私が持っている

(単なる警告アラートのない窓)、アラートをトリガーする必要がある300.00

を入力することができます。

**<input maxlength="12" type="text" name="r" id="price" style="display:none;width:212px;margin-left:5px;border-color:#F12B63;" size="30" placeholder="Type your price numbers only" onkeyup="this.value = this.value.replace (/\D+/, '')" />** 

答えて

2

正規表現については、^\d+\.?\d+$を試してください。

これは、1つ以上の数字で始まり、オプションで1つのピリオドが続き、その後に文字列の末尾に1つ以上の数字が続く文字列と一致します。

が値をテストするには、お使いの検証コードの中に次の操作を行います。

//Add event handler using W3C event binding 
document.getElementById("price").addEventListener("blur", function() 
{ 
    //Test the value of the input field and whether it matches the regular expression,  where val is the value extracted from the field 
    if(!this.value.match(/^\d+\.?\d+$/)) 
    { 
    alert("Validation error, must be numeric"); 
    } 
}, false); 

EDIT:あなたがIEで結合事象を追加したい場合は、document.getElementById("price").onblur = function(){...}またはIEのイベント結合モデルを結合伝統的なイベントを使用するか、ということに注意してください。 document.getElementById("price").attachEvent("onblur", function(){...});attachEventを使用すると、このオブジェクトがコールバック関数内に割り当てられないため、イベントオブジェクト(window.event)を取得し、window.event.srcElementを使用して要素を抽出する必要があります。参照のためにhttp://www.quirksmode.org/js/events_advanced.htmlを参照してください。

+0

これを使用して入力フィールドにリスナーを追加するにはどうすればよいですか? – 422

+0

@ 422は、上記のイベントバインディングコードを追加しました –

+0

期間文字をエスケープする必要があります。正規表現は300x00または300q00と一致します。 – jfriend00

0

私はvar result=this.value.match(/[0-9]+\.?[0-9]+/); if(result==null){alert}

推測