0

私はデザイナーですが、正規表現にはあまり詳しくありません。私は、このフォーラムへの非常に親切な投稿者の助けを借りて、ここまでたどり着くためにかなりの努力をしてきました。以下の checkform というスクリプトは、'client'、'terms'、'AMOUNT' の 3 つのフィールドを検証する必要があります。クライアントと用語は必須フィールドですが、「AMOUNT」は適切な小数点形式で入力する必要があります。€27.00。'client' と 'terms を検証しますが、'AMOUNT' を完全に無視しますか? 何もチェックしません。

どんな助けでも大歓迎です。

<form action=http://rcehholidaytrust.com/account/redirectoffresponsepage.php method=post onSubmit="return checkform()">
        <table width="400" border="0" cellspacing="1" cellpadding="0">
            <tr>
            <td><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Name </font></div></td>
            <td><input type="text" name="name" size="48" /></td>
            </tr>
            <tr>
            <td><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Acc. No.</font></td>
            <td><label for="client"></label>
            <input name="CUST_NUM" type="text" id="client" size="48" /></td>
            </tr>
            <tr>
                <td><div align="right">Payment €&lt;/div></td>
            <td><label for="AMOUNT"></label>
            <input name="AMOUNT" type="text" id="AMOUNT" size="47" /></td>
         </tr>
            <tr>
            <td><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Address</font></div></td>
            <td><textarea name="address" wrap="virtual" cols="35" rows="5"></textarea></td>
            </tr>
            <tr>
            <td><div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Telephone</font></div></td>
            <td><input type="text" name="telephone" size="48" /></td>
            </tr>
            <tr>
            <td><p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Email</font></p></td>
            <td><input type="text" name="email" size="48" /></td>
            </tr>
            <tr>
            <td><div align="right"></div></td>
            <td>&nbsp;</td>
            </tr>
            <tr>
             <td>&nbsp;</td>
            <td><input type="checkbox" name="terms" id="terms" />
             <label for="terms">Agree to terms and conditions</label></td>
                    </tr>
        </table>
        <p>&nbsp;</p>

    <input type=submit value="Proceed to secure server">
</form>


<script>
function checkform()
    {
     var reg=/^[0-9]{1,6}\.[0-9]{2}$/;

        var status=true;
     if(!reg.test(document.getElementById('AMOUNT').value))
     {
        status=false;
     }
     if(document.getElementById('client').value=="" || document.getElementById('name').value=="")
     {
            status=false;
     }
     if(document.getElementById('terms').checked==false)
        {
            status=false;
     }
        if(status==false)
        alert("Please check all fields");
        return status;
    }    
</script>
</body>
</html>
4

3 に答える 3

2

正規表現^[0-9]{1,6}\.[0-9]{2}$は、1 ~ 6 桁の後に 2 桁の 10 進数が続くものと一致します。


これを試すことができます

^[0-9]{1,6}(\.[0-9]{2})?$
//This would match  1 to 6 digits optionally followed by 2 decimal digits.

また

 ^[0-9]{1,6}(\.[0-9]{1,2})?$
//This would match  1 to 6 digits optionally followed by 1 to 2 decimal digits.

?オプションで前のグループまたは文字に一致


編集

属性に同じ名前を使用してidいるname場合もあれば、そのうちの 1 つを使用している場合もあります。これこれを見てください。

 <input type="text" name="name" size="48" />

する必要があります

<input name="name" type="text" name="name" id="name" size="48" />
于 2013-05-06T14:18:26.020 に答える
1

正規表現は正常に機能しています。スクリプトが失敗しています

document.getElementById('name').value==""

IDnameを持つ要素がないため、これはエラーになります。入力idに属性を追加する必要があります。name

<input type="text" name="name" id="name" size="48" />

AMOUNTフィールドに対して別のアラートを出すには、正規表現テストの失敗を処理するブロック内にアラートを配置します。

 if(!reg.test(document.getElementById('AMOUNT').value))
 {
    alert("Please enter a valid amount");
    return false;
 }

ここで使用return falseして、関数の最後に到達したときに 2 番目のアラートを受信しないようにします。

于 2013-05-06T14:22:50.417 に答える
0
于 2013-05-06T14:17:01.877 に答える