0

jquery検証プラグインを使用して基本的な正規表現検証を試みましたが、「必要な」ルールに対してのみ機能し、addメソッドregexvalidに対しては機能しません。これを達成する方法

前もって感謝します、

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
     <script type="text/javascript" src="js/jquery-1.9.0.mini.js" > </script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.js" ></script>
    <script type="text/javascript">
        $(document).ready(function () {
    jQuery.validator.addMethod("regexvalid",function(element,value){
            return this.optional(element)|| /[0-9]*/.test(value);

    });
            $('#logform').validate({
                rules: {
                    txtUsr: {
                        required: true,
                        regexvalid:true

                    },
                    txtPass: {
                        required: true

                    }

                },
                messages: {
                    txtUsr: {
                        required: 'Please enter username',
                        regexvalid:'valid numbers'
                    },
                    txtPass: {
                        required: 'Please enter password'
                    }
                }

            });


        });


    </script>
    <style type="text/css">

.error

{

border-color:Red;

border-style:solid;

border-width:1px;

}

#signupForm label.error {
    margin-left: 10px;
    width: auto;
    display: inline;
}


</style>
</head>
<body>
<div id='LoginDiv' style='width:400px;height:300px;background-color:green;'>
    <form id='logform'>
        User Name : <input type="text" id='txtUsr' name='txtUsr' style='margin-top:12px'/>
        <br/>
        <br/>
        Password : <input type="text" id='txtPass' name='txtPass' /> 
        <br/>
        <br/>
        <input type="submit" id='btnSubmit' value='Submit' />
    </form>
    </div>
</body>
</html>
4

1 に答える 1

0

ここには 2 つの問題があります。

1) カスタムメソッドに渡す変数はです:

jQuery.validator.addMethod("regexvalid",function(element,value){

ドキュメントに従ってvalue最初に来ます...

jQuery.validator.addMethod("regexvalid",function(value, element){

2) 私は正規表現の専門家ではありません。正規表現が何をすべきかを説明していませんが、有効ではないようです。値が数値かどうかをテストする場合は、既定のnumberルールを使用します。それ以外の場合は、regexvalidメソッド自体が機能しているため、正規表現を適切に調整する必要があります。

numberこれは、デモンストレーションとしてデフォルト メソッドの正規表現関数を使用しています。

jQuery.validator.addMethod("regexvalid", function (value, element) {
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
});

デモ: http://jsfiddle.net/ZFd4B/


あなたの正規表現に関する編集

あなたの正規表現/[0-9]*/.test(value)が何もしないように見える理由は、実際には何もしていないからです。

  • [0-9]は任意の数に一致します。

  • *前の式の「 0個以上」に一致するように指示しています。

のおかげ*で、テストは にtrue関係なく常に返され[0-9]ます。

このカスタムメソッドが何をすべきかを説明したことはありませんが、regexすべての条件で常に満たされているように見えるため、提供したものは事実上意味がありません.

ソース: http://webcheatsheet.com/php/regular_expressions.php#basics

于 2013-03-29T14:22:06.240 に答える