Глобальная проблема пользовательского метода jQuery-валидатора с несколькими формами

У меня есть несколько форм на одной HTML-странице. Каждая форма будет иметь разную логику проверки для одного и того же имени метода. Однако jQuery-валидатор позволяет добавлять метод только глобально, например, как показано ниже для метода «равно»:

$.validator.methods.equal = function(value, element, param) {
    // form1 logic
    return value == param;
};

Я пробовал jQuery.noConflict(), но это не мешает методу form2 переопределять form1.

Причина необходимости, я разрабатываю портальное приложение с несколькими портлетами. Каждый портлет является самостоятельным веб-приложением (но без тегов HTML, HEAD, BODY, просто фрагмент HTML). Каждый портлет не знает друг о друге. Вместе они образуют единую HTML-страницу, портал объединит все HTML-фрагменты портлетов и добавит общие теги HTML, HEAD, BODY.

Мне нужен либо способ разрешить несколько экземпляров jQuery, либо несколько экземпляров jQuery-валидатора, либо способ объявить пользовательский метод проверки не глобально.

Помощь оценена.


person cix.yong    schedule 08.07.2012    source источник


Ответы (1)


Это уродливый хак, но вы можете поместить портлеты в фреймы. Каждый iframe запускает javascript изолированно. У вас может быть несколько «экземпляров» jquery.

Тем не менее, iFrames вызывают множество других проблем, так что это последнее средство.

person ccleve    schedule 08.07.2012
comment
Спасибо, но это не годится, потому что это приложение с портлетом. - person cix.yong; 08.07.2012