Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Кроссбраузерность в регулярках
 
 автор: shkarbatov   (28.07.2011 в 19:22)   письмо автору
 
 

Помогите пожалуйста, есть поле, в которое разрешается вводить только русские символы, если вводятся не русские выдается сообщение "Введите имя на русском языке". Работает он в IE, Chrome, Safary, а вот в FireFox(5) не работает.

1) Подскажите пожалуйста в чем причина и как ее решить.
2) /^[а-яА-Я]/i - регулярка позволяющая вводить только русские символы, но она пропускает и цыфры если их вводить после русских букв, помогите пожалуйста исправить этот недочет.


Заранее благодарен!

<tr><td><div class="type1">
    <input name="email_" onkeyup="email(this)" id="email_" size="31"/>
    <div id="pa"></div>        
</div> </td><td>E-mail</td></tr>



var test = false;
function namep(elementValue){  
   var emailPattern = /^[а-яА-Я]/i; 

   if (emailPattern.test(elementValue.value))
    {
        pb.innerHTML = "";
        test = true;
    } 
   else 
    {
        pb.innerHTML = "Введите имя на русском языке";
        test = false;
    }
   
 } 

  Ответить  
 
 автор: f111   (28.07.2011 в 22:50)   письмо автору
 
   для: shkarbatov   (28.07.2011 в 19:22)
 

>Кроссбраузерность в регулярках
как познаете её, научите и меня

var emailPattern = /^[а-яА-Я]/i;
проверяет только первый символ

var emailPattern = /^[а-яА-Я]+$/;
проверяет все символы

может ещё понадобится модификатор g, а может и нет, модификатор i в данном случае наверно не нужен

  Ответить  
 
 автор: shkarbatov   (29.07.2011 в 00:28)   письмо автору
 
   для: f111   (28.07.2011 в 22:50)
 

Спасибо, со вторым вопросом я разобрался, а вот с первым, увы =(

  Ответить  
 
 автор: f111   (29.07.2011 в 00:42)   письмо автору
 
   для: shkarbatov   (29.07.2011 в 00:28)
 

а в чём заключается первый? ещё раз и с примерами))

  Ответить  
 
 автор: shkarbatov   (29.07.2011 в 01:16)   письмо автору
 
   для: f111   (29.07.2011 в 00:42)
 

Есть поле input, если в него вводятся не русские символы, или цифры, тогда выводится "Введите имя на русском языке", иначе надпись просто обнуляется pb.innerHTML = ""

Проверка работает и выводятся сообщения. Выполняется во всех браузер кроме FireFox. Вот почему-то там оно и не работает. Вот пример: http://shkarbatov.com/artpack/


var test = false;
function namep(elementValue){ 
   var emailPattern = /^[а-яА-ЯёЁ]+$/;
   if (emailPattern.test(elementValue.value))
    {
        pb.innerHTML = "";
        test = true;
    }
   else
    {
        pb.innerHTML = "Введите имя на русском языке";
        test = false;
    }
 }



<tr><td><div class="type1">
        <input name="name_" onkeyup="namep(this)" id="name_" size="31"/>
        <div id="pb"></div>
</div></td><td>&nbsp&nbspИмя</td></tr>

  Ответить  
 
 автор: f111   (29.07.2011 в 01:34)   письмо автору
 
   для: shkarbatov   (29.07.2011 в 01:16)
 

а у меня всё работает, и как раз в FF 5.0
<html>
<head>
<title></title>
    <script type="text/javascript">
        var test = false;
        function namep(elementValue){
        var emailPattern = /^[а-яА-ЯёЁ]+$/;
        var pb=document.getElementById('pb');
        if (emailPattern.test(elementValue.value))
        {
            pb.innerHTML = "всё кульно!";
            test = true;
        }
        else
        {
            pb.innerHTML = "Введите имя на русском языке";
            test = false;
        }
        }
    </script>
</head>
<body>
    <input name="name_" onkeyup="namep(this)" id="name_" size="31"/>
    <div id="pb">?(уапрос)</div>
</body>
</html>


на вашей странице у меня не то что набор символов, но даже имя "Иван" не пропускает, видимо скрипт догадывается что я вру))

  Ответить  
 
 автор: shkarbatov   (29.07.2011 в 01:45)   письмо автору
 
   для: f111   (29.07.2011 в 01:34)
 

Точно, я просто затупил с var pb=document.getElementById('pb');

Я написал var pd=document.getElementById('pb'); а юзал pb.innerHTML = "всё кульно!";

Спасибо большое!

  Ответить  
 
 автор: f111   (29.07.2011 в 01:53)   письмо автору
 
   для: shkarbatov   (29.07.2011 в 01:45)
 

крутая у вас регулярка для проверки емайлов
var emailPattern = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;
(в первом "подвыражении" вы пропускаете пробелы ("[\w-\s]+") дальше читать не стал, хотя с радостью посмотрел на то что можно подставить под этот шаблон)

я как-то пользовался такой
|[\w\.-]+@\w+\.[a-z]{2,4}|i
самопальной (что не значит правильной).

какие символы ваша должна пропускать?

  Ответить  
 
 автор: shkarbatov   (29.07.2011 в 02:04)   письмо автору
 
   для: f111   (29.07.2011 в 01:53)
 

Человека =)

  Ответить  
 
 автор: f111   (29.07.2011 в 02:06)   письмо автору
 
   для: shkarbatov   (29.07.2011 в 02:04)
 

ответ я не понял, ну и ладно))

  Ответить  
 
 автор: sl1p   (29.07.2011 в 16:18)   письмо автору
 
   для: shkarbatov   (28.07.2011 в 19:22)
 

лучше кроссбраузерный пхп использовать)

  Ответить  
 
 автор: f111   (29.07.2011 в 17:39)   письмо автору
 
   для: sl1p   (29.07.2011 в 16:18)
 

гениально!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования