2013-03-28 1 views
0

Я пробовал проверку правильности регулярного выражения с помощью плагина проверки правильности jquery, но дело в том, что оно работает только для обязательных правил, но не для метода add regexvalid. Как достичь этогоValidation plugin не проверяет правильное выражение в методе добавления

Спасибо заранее,

<!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> 
+0

Что вы ожидаете от своего регулярного выражения? Другими словами, каково правило, которое вы пытаетесь создать, которое должно тестироваться? – Sparky

ответ

0

Есть две проблемы.

1) Переменные вы передаете в ваш пользовательский метод являются назад:

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

As per documentation, value приходит первым ...

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

2) Я нет эксперта с регулярным выражением, и вы не объяснили, что он должен делать, но, похоже, это не действует. Если вы хотите проверить, является ли значение числом, используйте the default number rule. В противном случае сам метод regexvalid работает, и вам просто нужно правильно настроить ваше регулярное выражение.

Эта функция используется в качестве демонстрации с помощью функции регулярных выражений по умолчанию по умолчанию: number.

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

DEMO: http://jsfiddle.net/ZFd4B/


EDIT, относительно вашего Regex:

Причина ваше регулярное выражение, /[0-9]*/.test(value) кажется, ничего не делать, потому что это не на самом деле делать ничего.

  • [0-9] соответствует любое количество.

  • * сообщает, что соответствует «ноль или более» предыдущего выражения.

Так благодаря *, тест будет всегда возвращать true независимо от [0-9].

Вы никогда не объясняли, что должен сделать этот пользовательский метод, но предоставленный вами regex фактически спорный, так как он всегда удовлетворен для каждого условия.

http://webcheatsheet.com/php/regular_expressions.php#basics

Смежные вопросы