Показать сообщение отдельно
  #1 (permalink)  
Старый 16.08.2015, 19:46
Новичок на форуме
Отправить личное сообщение для evtyshenkosemen Посмотреть профиль Найти все сообщения от evtyshenkosemen
 
Регистрация: 16.08.2015
Сообщений: 5

jQuery Validation Plugin для валидации динамических input'ов
Приветствую Вас, профессионалы JavaScript!
Я мало программировал на JS(Ну точнее начинаю)...
Ммм, чему такое долгое вступление? О чем нужно спросите) Итак, к сути:]

На странице есть два блока с id="well_[номер]".
Каждое из них состоит из трех input полей (cost, name, description).
Схематично это выглядит так:
[well_1]
(cost_1)
(name_1)
(description_1)
[/well_1]
[well_2]
(cost_2)
(name_2)
(description_2)
[/well_2]
Эти блоки (их может быть более 2-х) загружаются из базы. Генерируется HTML и JS код интерпретатором PHP.
HTML - сами блоки
JS - код валидации для сгенерированных блоков(Ниже пример кода)
$("#bonuses").validate({
		rules: {
			cost_1: {
				required: true,
				digits: true,
				minlength: 1,
				maxlength: 10
			},
			name_1: {
				required: true,
				only_allowed_characters: true,
				minlength: 3,
				maxlength: 20
			},
			description_1: {
				required: true,
				only_allowed_characters: true,
				minlength: 20,
				maxlength: 200
			},
			cost_2: {
				required: true,
				digits: true,
				minlength: 1,
				maxlength: 10
			},
			name_2: {
				required: true,
				only_allowed_characters: true,
				minlength: 3,
				maxlength: 20
			},
			description_2: {
				required: true,
				only_allowed_characters: true,
				minlength: 20,
				maxlength: 200
			},
		},
	})
});

Все замечательно работает, формы проверяются. В плагин jQuery Validation путем проб и ошибок добавлен код, который активирует всплывающие сообщения плагина tipsy.

Проблема в том, что новые блоки well_№, которые добавляются в страницу на лету, не представляется возможности проверять так же, как и добавленные не на лету=[ Ибо (видимо) нельзя повторно добавить правила для той же таблицы и новых полей...

Пробовал добавлять следующим кодом:
eval'
$().ready(function() {
	$("#bonuses").validate({
		rules: {
			cost_'+count+': {
				required: true,
				digits: true,
				minlength: 1,
				maxlength: 10
			}, 
			name_'+count+': { 
				required: true, 
				only_allowed_characters: 
				true, minlength: 3, 
				maxlength: 20 
			}, 
			description_'+count+': {
				required: true, 
				only_allowed_characters: true, 
				minlength: 20, 
				maxlength: 200 
			}, 
		}, 
	}) 
});
';

Через eval(); Возможно криво и говнокодно, но с моими PHP'шными мозгами это был единственный выход... Код не давал ни ошибок ни результата...

Прошу помощи у гуру JavaScript и jQuery.
Используется плагин jQuery Validation
Код прилагаю в архиве. Очень надеюсь на вашу помощь.
Спасибо!
Вложения:
Тип файла: zip site.zip (217.7 Кб, 6 просмотров)
Ответить с цитированием