Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JQuery Validation динамических форм (ASP NET MVC) / 12 сообщений из 12, страница 1 из 1
18.03.2014, 10:12
    #38589056
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
Здравстуйте!

Создаем страничку на ASP NET MVC.
Для валидации используется jquery.validate и jquery.validate.unobtrusive

Изначально все поля валидируются нормально. Валидируются, как я понимаю, по аттрибутам

Пример для required
Код: html
1.
<input type="text" value="" name="[0].Article" data-val-required="Требуется поле Артикул." data-val="true" class="form-control valid" autocomplete="off">



Возникает проблема, когда мы динамически еще создаем поля формы. Точнее копируем в скрипте(по нажатию на кнопочку) с помощью .clone().
Новые скопированные поля не валидируются.

Как подключить валидацию и для них?

Вызов что-то типа $(".myform").validate() ничего не дает.
...
Рейтинг: 0 / 0
18.03.2014, 10:58
    #38589098
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
Sky Dragon,

не пользовался. но предположу почему так. инициализируя валидацию создается объект с существующими на этот момент полями
последующие добавления полей не меняют этот объект. после добавления надо снова проинициализировать валидацию
...
Рейтинг: 0 / 0
18.03.2014, 11:22
    #38589124
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
ILLHEAD,

Вот вопрос и состоит именно в том, как ее проинициировать :)
...
Рейтинг: 0 / 0
18.03.2014, 11:31
    #38589139
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
Sky Dragon,

вы же гдето пишете
jQuery('form_name').validate(...)
это и есть инициализация
...
Рейтинг: 0 / 0
18.03.2014, 11:43
    #38589162
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
ILLHEAD,

Изначально - нет. Только подключаются скрипты в хедере страницы.


jQuery('form_name').validate(...) - такую штуку пытались прописать в конце скрипта, который копирует поля формы. Как раз для инициализации. Это не помогло.
...
Рейтинг: 0 / 0
18.03.2014, 11:48
    #38589170
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
авторВызов что-то типа $(".myform").validate() ничего не дает.т.е. повторный вызов не помогает?

в доке есть такое
Код: plaintext
jQuery('form').validateDestroy();

сделайте дестрой перед поторным инитом
...
Рейтинг: 0 / 0
18.03.2014, 11:51
    #38589176
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
Sky DragonILLHEAD,

Изначально - нет. Только подключаются скрипты в хедере страницы.


jQuery('form_name').validate(...) - такую штуку пытались прописать в конце скрипта, который копирует поля формы. Как раз для инициализации. Это не помогло.
jQuery('form_name').validate(...) - надо не один раз вызывать а прописав ее в конце вы делаете один раз
пропишите дестрой и валид в теле функции, который вы дополняете полями форму. после аппенда
...
Рейтинг: 0 / 0
18.03.2014, 12:04
    #38589201
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
ILLHEAD,

1. Почему то ругается, что не знает метода validateDestroy

2.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
$(function () {
 $('.add-product').click(function(){
  var i="0";
  $(".product-create-card").each(function () {
  if ($(this).attr("name") > i) 
  { 
   i=$(this).attr("name");
  }
   
  });  
  i++;
  var rerg = new RegExp("[0-9]+");
  $(".product-create-card").last().clone(true)
  .attr('name',(i))
  .appendTo(".products-create-cards")
   .find("input[name^='[']").each(function () {
   
    $(this).val("").removeClass("input-validation-error")
    .attr("name", $(this).attr("name").replace(rerg, i));    
   });
   $(".product-create-card").last()
   .find("select[name^='[']").each(function () {
    $(this).removeClass("input-validation-error")
    .attr("name", $(this).attr("name").replace(rerg, i)); 
    });
    
    //jQuery(".form-inline").validateDestroy();
   jQuery(".form-inline").validate();
   return false;
 
});
});




.form-inline - вся форма
.product-create-card - fieldset который копируем
...
Рейтинг: 0 / 0
18.03.2014, 12:13
    #38589212
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
Sky Dragon,

.. по-моему, тут о разных плугинах речь идет .. в вашем случае, скорее всего вот это надо почитать
http://jqueryvalidation.org/Validator.resetForm
...
Рейтинг: 0 / 0
18.03.2014, 12:32
    #38589235
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
carrotik,

да, Вы правы.

Вопрос еще такой. Надо ли явно указывать правила валидации?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
$(".selector").validate({
  rules: {
    name: "required",
    email: {
      required: true,
      email: true
    }
  }}});


Просто ведь при клонировании полей форм, клонируются и все атрибуты валидации. И не очень хочется на десяток полей все вручную переписывать.
И как обратиться тогда в правиле к полю, имя которого, например [1].Article?

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
$(".selector").validate({
  rules: {
    [1].Article: "required",
    email: {
      required: true,
      email: true
    }
  }}});


- естественно выдает ошибку. Брали "[1].Article" в кавычки, все равно валидация не проходит
...
Рейтинг: 0 / 0
18.03.2014, 13:08
    #38589295
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
Sky Dragon,

наверное потому что
http://www.w3.org/TR/html4/types.html#type-cdata ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
...
Рейтинг: 0 / 0
18.03.2014, 13:43
    #38589377
Sky Dragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JQuery Validation динамических форм (ASP NET MVC)
Всем спасибо!

Проблему решили.

Только использовался вообще validation.unobtrusive.

Решение взято отсюда
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JQuery Validation динамических форм (ASP NET MVC) / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]