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

Форум Регулярные Выражения

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

 

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

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

тема: Скрипт работает через раз
 
 автор: Woland   (03.11.2007 в 17:17)   письмо автору
 
 

2 функции, одна вызывается из другой:
function check_field(field,pat)

pattern1=/^[а-яА-Я]{2,}$/gi;
pattern2=/^[а-яА-Я\d\s]{2,}$/gi;
pattern3=/^[\d]{6,}$/gi;
pattern4=/^[\d]{4}$/gi;
pattern5=/^[\d]{6}$/gi;
{
    pattern=pat;
    alert(pat);
    if (pattern.test(field.value))
    {
        field.className='correct';
        return true;
    }
    else
    {
        field.className='incorrect';
        //event.returnValue=false;
        return false;
    };
}


function check_form()
{
    var cnt=0;
    if(false==check_field(document.emp.elements[0],pattern1))cnt++;
    if(false==check_field(document.emp.elements[1],pattern1))cnt++;
    if(false==check_field(document.emp.elements[2],pattern1))cnt++;
    if(false==check_field(document.emp.elements[6],pattern2))cnt++;
    
    if(false==check_field(document.emp.elements[8],pattern4))cnt++;
    if(false==check_field(document.emp.elements[9],pattern5))cnt++;
    if(false==check_field(document.emp.elements[10],pattern2))cnt++;
    if(cnt!=0)
    {
        alert("Проверьте введенные значения! Неверные выделены желтым фоном");
        event.returnValue=false;
    }
}


Для одного и того же паттерна (например, pattern1)функция работает через раз. Если же прописать во входных аргументах функции паттерн, к примеру, вот таким образом:

if(false==check_field(document.emp.elements[7],/^[\d]{6}$/gi))cnt++;

то все работает. Как сделать, чтобы функция исправно работала и при использовании переменной в качестве исходного аргумента?

   
 
 автор: EXP   (03.11.2007 в 19:58)   письмо автору
 
   для: Woland   (03.11.2007 в 17:17)
 

попробовал убрать из шаблонов флаг "g" , заработало.
он там лишний

   
 
 автор: Woland   (04.11.2007 в 05:44)   письмо автору
 
   для: EXP   (03.11.2007 в 19:58)
 

Действительно, заработало. Спасибо!

   
Rambler's Top100
вверх

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