2017-01-19 2 views
1
$(function() { 
    $("#save-chart-form").submit(function(event) { 
     $("#saveChartButton").prop('value', 'Please be patient'); 
     // event.preventDefault() // works with this 
     // $('#save-chart-form').submit(); // Doesn't work 
    }); 
}); 

Я запускаю это на форме # save-chart-form при нажатии кнопки #saveChartButton. Таким образом, при нажатии кнопки текст кнопки «Пожалуйста, будьте терпеливы».Значение изменения стоимости JQuery для отправки не будет работать

Это не работает вообще, если я не поставил событие preventDefault. Нет ли способа выполнить какое-либо действие jQuery при отправке формы? Я пробовал много других решений, которые все терпят неудачу. Также я не могу получить $('#save-chart-form').submit() все, что было бы решением. Я использую jQuery 3.1.1

EDIT: Это проблема с браузером: она работает правильно в Firefox. Safari не обрабатывает ничего после запроса на разгрузку, как упоминал Рори МакКросан.

+0

Используйте значение val() not prop() для установки значения. – epascarello

+0

Почему вы повторно отправляете форму внутри формы? Он уже отправляется. – epascarello

ответ

0

Проблема в том, что в большинстве браузеров интерфейс больше не будет обновляться один раз запрос на выгрузку страницу производится (т.е.. Представление формы было сделано). Обходным путем было бы изменить текст кнопки при событии click самой кнопки, вместо события submitform. Попробуйте это:

$("#saveChartButton").click(function() { 
    $(this).prop('value', 'Please be patient'); 
}); 

Working example

Обратите внимание, что изменения видны только на малое время, прежде чем страница выгружается.

+0

Действительно, эта проблема затрагивает только Safari, я не получаю ее в firefox. Вчера я столкнулся с такой же проблемой:/ –

+0

Это может быть конкретный браузер. Я вижу такое же поведение в Chrome. Обновлено, чтобы быть более понятным. –

1

не использовать $('#save-chart-form').submit(). Это избыточно.

$(function(){ 
    $("#save-chart-form").submit(function(event){ 
     $("#saveChartButton").prop('value', 'Please be patient'); 
    }); 
}); 
0

Попробуйте показать текст «будьте терпеливы» в другом HTML-элементе, а не в #saveChartButton, потому что изменение значения элемента формы, который уже отправлен, может смущать механизм js.

например.

$("#save-chart-form").submit(function(event) { 
    $("#msgBox").html('Please be patient'); 
}); 
Смежные вопросы