2013-06-22 3 views
0

У меня есть страница с 4 вкладками jQuery, содержащими другую форму на каждой вкладке. Каждая форма должна брать числа, не может быть> 100.Проблема проверки jQuery на вкладке

Я написал этот JQuery код для проверки формы, чтобы убедиться, что введенное число < 100:

$(document).ready(function(){ 
    var preventSubmit = 0; 
    $('#targetForm').submit(function(){ 
     $(':input', '#targetForm').each(function(){ 
      if(this.value > 100){ 
       $('#message').fadeIn(); 
       $('#message').fadeOut(4000); 
       prevent = 1; 

      }//END IF 

     }); 
     if(preventSubmit == 1){ 
      preventSubmit = 0; 
      return false; 
     }//END IF 
    }); 
}); 

Он отлично работает, но только с формой на первой вкладке. Если я нажму на вторую вкладку и отправлю недействительные данные (более 100), она не будет проверяться.

Любые идеи?

Спасибо

+0

Если вы динамически создаете новую форму после нажатия на вторую вкладку, вы должны обязательно присоединить обработчик 'submit()' к этой новой форме. – Aiias

+0

Каждый раз, когда я нажимаю на вкладку, загружается одна и та же страница, но идентификатор передается по URL-адресу (pageName? Id = 2). В верхней части страницы я захватываю контент на основе идентификатора URL. Таким образом, в основном эта же страница перерисовывается с новым контентом. Я не знаю, как подключить обработчик submit(), поскольку код jQuery находится на странице формы. Спасибо – user2160174

+0

У вас есть несколько форм с тем же 'id'? – Aiias

ответ

0

После нажатия кнопки на каждой вкладке и ваш запрос AJAX закончит изменение формы, обязательно повторно прикрепить ваш .submit() обработчик формы по телефону:

$('#targetForm').submit(function() { 
    $(':input', '#targetForm').each(function() { 
    if (this.value > 100) { 
     $('#message').fadeIn(); 
     $('#message').fadeOut(4000); 
     prevent = 1; 
    } 
    }); 

    if (preventSubmit == 1) { 
    preventSubmit = 0; 
    return false; 
    } 
}); 

Предполагая, что это является глобальным Javascript, он только когда-либо запускается после, когда страница изначально загружается. Он не запускается снова, когда запросы AJAX отправляются и изменяют форму на той же странице. Таким образом, вам нужно снова вызвать эту функцию после того, как ваш запрос AJAX вернется, чтобы убедиться, что он присутствует в новой модифицированной форме.

+0

Не думаю, что понимаю, что вы имеете в виду, повторно прикрепляя отправителя. Код jQuery находится в нижней части страницы. Таким образом, каждый раз, когда нажимается новая вкладка и загружается новая форма, также загружается код jQuery. Поэтому я не знаю, как его снова присоединить, если код уже на странице – user2160174

+0

@ user2160174 - Когда вы щелкаете по вкладке, отправляет запрос AJAX (например, оставаясь на одной странице, но элементы формы составляют * * заменен **) или он открывает полностью отдельную страницу (даже если эта страница имеет тот же URL)? Если вы используете AJAX и остаетесь на одной странице, то удаление любой существующей кнопки отправки может удалить обработчик ['.submit()') (http://api.jquery.com/submit/) из формы. – Aiias

+0

такой же страница, только замена содержание формы. – user2160174

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