2010-02-19 3 views
0

У меня есть пять форм на странице. У меня есть моя проверка также с использованием плагина проверки jquery. Есть этот странный маленький случай, когда я хочу освещать - в котором сервер не возвращает никаких результатов (для любой из форм), и мне нужно отобразить одну и ту же проверку jquery. Я был в состоянии сделать это с:JQuery - как найти текущую позицию курсора

$("#form1").validate().element(".myid");    

Теперь я застрял на реализацию этого для всех пяти форм (пять Forms- пять полей соответственно).

Одним из способов является наследием, если-то еще способ

var re5digit=/^\d{5}$; 
if (document.myform.myid.value.search(re5digit)==-1){ 
alert("1"); 
} 
(if (document.myform.myid2.value.search(re5digit)==-1){ 
alert("2"); 
} 
... 

ИЛИ спросить вас за Jquery хака, которые могли бы найти мне текущую позицию курсора, и я мог бы называть Validate? предложения?

ответ

1

Я не уверен, что я вполне понимаю, как ваш макет страницы и проверка устанавливаются, но вы можете быть в состоянии хранить последнюю форму, которая имела целенаправленный элемент в нем:

var lastFocusedForm; 
$('input').focus(function() { 
    lastFocusedForm = $(this).parents('form'); 
}); 

// and then when you need to validate... 
lastFocusedForm.validate().element(".myid"); 
+0

@James - это близко к тому, что я ищу, но что, если каждая из форм имеет разные идентификаторы? – bob

+0

Также формы не вложены. т. е. страница имеет множество распространенных форм .. так что $ (this) .parents ('form'); не будет работать - не так ли? – bob

+0

«$ (this)» в контексте $ ('input'). Focus (function() {$ (this)}) относится к элементу, который был сфокусирован. Итак, если вы ищете дерево DOM вверх, используя функцию parent() для элемента 'form', он будет соответствовать элементу формы, который содержит этот элемент. Хорошо, что формы не вложены - вложенные формы недействительны html. Кроме того, я не уверен, что «.element (« .idid ») необходим для проверки. Запуск «.validate()» в элементе формы должен быть достаточным. –

0

Я думаю, что вам нужно использовать немного другой подход. Каждый запрос проверки должен принадлежать к точной форме. Используя ваш путь, будет легко создать ситуацию, когда сообщения подтверждения, например, 1-я форма будут отображаться во 2-й форме. Чтобы избежать таких ошибок, вы должны назначать уникальные идентификаторы для форм и использовать закрытие javascript (http://odetocode.com/Blogs/scott/archive/2007/07/10/closure-on-javascript-closures.aspx и http://www.jibbering.com/faq/faq_notes/closures.html) в своей функции отправки ajax.

$(document).ready(function(){ 
    var form = $("#ajax-form"); 
    form.submit(function(){ 
     $.post( 
      "/controller/path", 
      form.serialize(), 
      function(receivedData){ 
       alert(receivedData); 
       form.whateveryouwant(); // do whatever you want with your form 
      } 
     ); 
    }); 
}); 
Смежные вопросы