Метод проверки электронной почты не работает, если мы вызываем prototype.js на странице? - PullRequest
0 голосов
/ 21 сентября 2010

Я создал метод добавления электронной почты (jquery) для проверки нескольких электронных писем для текстового поля получателя. все работает нормально, когда prototype.js не объявлен на странице. Чтобы избавиться от конфликта $, я также добавил меру метода $ noconflict (). В этом сценарии работают другие поля проверки, кроме поля проверки получателя электронной почты. В соответствии с моими выводами строка «jQuery.validator.methods.email.call (this, value, element)» № 50 на странице не работает, и, следовательно, метод не запускается. Мне нужно также вызвать prototype.js. Пожалуйста, смотрите следующий код для более ясного понимания ....... Заранее спасибо.

Пожалуйста, смотрите код ниже: Проверка нескольких адресов электронной почты
var JQ = jQuery.noConflict ();
JQ (документ) .ready (function () {

  // Handler for .ready() called.
JQ("#email-form").validate({
            rules : {
                email : {
                    required : true,
                                    email : true
                },
                            recipientEmail : {
                    multiemail: true,
                                    required : true
                            //      email : true
                                    }
            },
                    messages: {
                email: {
                    required: "Please enter your email address.",
                                    email: "Please enter a valid email address"
                 },
                             recipientEmail: {
                                    multiemail: "One or more of your recipient email addresses needs correction.",
                                    required: "Please enter the recipient's email address."
                                    //email: "Please enter a valid email address"
                }
            }
        }); 
});

JQ.validator.addMethod ("multiemail", функция (значение, элемент) { if (this.optional (element)) // возвращает true для необязательного элемента вернуть истину; // var emails = value.split (new RegExp ("\ s *, \ s *", "gi")); var emails = value.split (new RegExp ("\ s *, \ s *", "gi"));

       valid = true; 
               maxEmaillength = emails.length;
       for(var i in emails) 
            {
         value = emails[i]; 
         valid = valid && jQuery.validator.methods.email.call(this, value, element);
                     // Maximum email length validation
                       if(maxEmaillength > 5)
                               {
                                       JQ('label.error:first').html("Please enter only 5 mail IDs at a time");
                                       JQ('label.error:first').css(display, block);                            
                                       setTimeout(alert("Please enter only 5 mail IDs at a time"), 5);
                            }       
        } 
        return valid; 
                    }, 'One or more email addresses are invalid');

</head>
<body>
<form action="" method="get" name="email-form" id="email-form">
<label for="email">email</label>
<input type="text" name="email" id="email" style="width:200px" />
<br />
<label for="recipientEmail">Recipient Email</label>
<input type="text" name="recipientEmail" id="recipientEmail" style="width:500px" /><br />

<input type="submit" name="Submit" id="Submit" value="Submit" />
</form>
</body>
</html>

1 Ответ

1 голос
/ 28 сентября 2010

Я просто немного изменил подход, так как jQuery.validator.methods.email.call (this, value, element) не работал в предыдущем пользовательском методе. Хотя я не мог найти точную причину, почему это не работает с prototype.js и какое точное решение для этой проблемы. Но следующий фрагмент кода работает как нужно. Просто замените этот предыдущий пользовательский метод электронной почты jquery следующим.

function validateEmail(field) {
    var regex=/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
    return (regex.test(field)) ? true : false;
}

JQ.validator.addMethod("multiemail", function(value, element)
{
    var result = value.split(",");
    for(var i = 0;i < result.length;i++)
    if(!validateEmail(result[i]) || result.length > 5) 
    return false;               
    return true;                                                       

},'One or more email addresses are invalid');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...