Поскольку вы динамически изменяете правило, вам нужно программно принудительно проверить правильность этого поля при редактировании значения зависимого поля.
jQuery('[name="MISCAmount"]').on('blur keyup', function() {
jQuery('[name="MISCComments"]').valid(); // force validation
});
Кроме того ... * * 1004
Функция success
не будет повторно запускаться в «необязательном» поле, если это поле не заполнено или правила изменены. Это коренная проблема. Ваше поле динамически изменяется с required
на «необязательный», и нет способа заставить функцию success
перезапустить этот случай.
Решение состоит в том, чтобы использовать функцию unhighlight
вместо success
, которая запускается каждый раз, когда поле оценивается на достоверность. Следующий код присоединяет методы show
и hide
к этим функциям по умолчанию.
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass).tooltipster('hide');
},
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass).tooltipster('show');
},
DEMO: jsfiddle.net / sk074zwv / 9 /
Цитирую себя из этого другого ответа :
"Я также заменил обратный вызов success
на unhighlight
. В« необязательных »полях сообщение об ошибке никогда не удалялось при последующем отключении поля ... это потому, что функция success
не срабатывает при этих обстоятельствах. "
Я также рекомендую вам обновить до ToolTipster версии 4 и переработать код для этого. Версия 4 содержит некоторые новые / улучшенные методы, такие как open
и close
, которые имеют немного больше смысла для переключения подсказок и очень хорошо работают с highlight
и unhighlight
.