Для сайта Drupal я разработал довольно простой модуль, чтобы пользователи не нажимали несколько раз кнопку отправки. Когда кнопка отправки нажата, она заменяется небольшим сообщением, чтобы иметь некоторое терпение.Safari игнорирует внесение изменений в событие onclick
Проблема во всех браузерах, кажется, работает отлично, за исключением Safari.
$("input[id^='edit-submit']").click(function(e){
var message = Drupal.t('Please wait...');
$(this).hide();
$('<span>' + message + '</span>').insertAfter(this);
});
Когда я смотрю в отладчике я вижу атрибут не появляется стиль = «дисплей: нет;» но Safari, похоже, игнорирует это. Когда я вручную (через инструменты разработчика) добавляю дисплей: ни одна кнопка не исчезает.
Я не знаю, это jQuery doesn't run in Safari on form submit связано с тем, что, когда я добавляю console.log() между телом функции click, он выполняется один раз (значение $ (this) также указывает на правильный элемент), но оно не " t реагировать на любые изменения на этой кнопке.
Похоже, что с момента нажатия кнопки отправки она находится в каком-то заблокированном состоянии, что также предотвратит двойные отправки, но я хочу быть уверенным, что это стандартное поведение для сафари, а затем ошибка, которая может преследуйте меня в будущем.
Я пробовал поиск по ключевым словам, но я не смог найти документацию, описывающую это поведение в Safari.
EDIT: Я также попытался удалить (и отсоединить) кнопку onclick, которая заставляет кнопку исчезать, но форма больше не отправляется.
, к сожалению, это не сработало. Это также примерно то же самое, что и hide(). Соответствующие элементы будут немедленно скрыты без анимации. Это примерно эквивалентно вызову .css («display», «none»), за исключением того, что значение свойства display сохранен в кеше данных jQuery "-> http://api.jquery.com/hide/ –
Попробуйте .detach(), чтобы временно удалить элемент из DOM. –
Thx для размышлений в одиночку - но с момента, когда я отсоединяю() (то же самое с удалением) кнопку отправки, форма больше не отправляется. Я собираюсь отредактировать свой оригинальный вопрос, чтобы добавить эту информацию. –