AjaxForm class error

Обнаружил при использовании в форме выпадающего списка select следующий баг.

Когда у select есть класс error, который добавляется при ошибке, то при отправлении формы все option (варианты выбора) удаляются. Это происходит тут:
form.find('.error').html('');
А ведь нужно очищять html только у тега, в котором текст ошибки.

У себя я сделал следующие изменения:

1. Заменил
form.find('.error_' + key).html(value).addClass('error');
на
form.find('.error_' + key).html(value);
потому что класс error у тегов с тексами ошибок нет необходимости удалять

2. Заменил
form.find('[name="' + key + '"]').addClass('error');
на
form.find('[name="' + key + '"]').parent().addClass('has-error');
именно этот класс отвечает за выделение красным в Bootstrap 3, у меня каждый элемент формы выводится следующим образом:
<div class="form-group">
	<input type="text" name="example" value="[[+fi.example]]" class="form-control"/>
	<span class="error error_example">[[+fi.error.example]]</span>
</div>

3. Заменил в двух местах
form.find('.error').removeClass('error');
на
form.find('.has-error').removeClass('has-error');
именно этот класс теперь удаляется

Если тема Bootstrap 3 не используется, можно просто добавлять класс has-error прямо к элементу формы:
Вместо пункта 2 заменить
form.find('[name="' + key + '"]').addClass('error');
на
form.find('[name="' + key + '"]').addClass('has-error');
и добавить такие же стили для has-error как и у error.
Олег Песчанский
14 апреля 2016, 09:49
modx.pro
1
1 376
0

Комментарии: 2

Сергей
25 апреля 2016, 21:58
0
Олег добрый вечер.
Подскажите пожалуйста если в курсе, где добавлять значения для разных ошибок при вводе полей типа [[+fi.error.example]] на вашем примере:

<div class="form-group">
<input type="text" name="example" value="[[+fi.example]]" class="form-control"/>
<span class="error error_example">[[+fi.error.example]]</span>
</div>
Хотелось бы чтоб для каждого поля выводилась своя ошибка а не одна на все.
Но не пойму где прописывать их.
Буду очень признателен ))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2