2016-10-01 2 views
0

Я хочу заменить кнопки оповещения JS и подтвердить. Основной причиной этого является флажок «Предотвращать диалоги в этом окне», который чаще всего выбирается пользователями автоматически! :)JS ждет ответа

Итак, при нажатии на кнопку появляется модальное окно, но функция не ждет ответа пользователя.

Я не хочу использовать JQuery UI-плагины и не могу теперь использовать обратные вызовы для этой проблемы.

Не могли бы вы помочь?

UPDATE

my_function(){ 
if(confirm('Are you sure?')) 
{ 
    ** do something ** 
} 
} 

Итак, я хочу, чтобы заменить подтвердить писать новую локальную функцию, которая заменит функцию выше:

confirm('text'){ 
** Do something ** 
} 

ответ

0

JavaScript - это однопоточный язык. Есть только пара случаев, когда вы можете «заблокировать» поток выполнения, который «alert», «confirm» и «prompt» .Другой сценарий требует асинхронного обратного вызова.

Объект promise упрощает обработку асинхронной логики и составляет available для большинства браузеров, и поддержка всех браузеров существует через shim.

Существует также множество библиотек, которые предлагают более богатые модальности над стандартным браузером.

Независимо от того, какой подход вы хотите, вам нужно узнать о обратных вызовах и асинхронной программировании для JavaScript.

+0

Спасибо, хорошо. Не могли бы вы также посмотреть здесь «http://stackoverflow.com/questions/39812807/php-html-issue-with-quotes»? –

0

ли вам нужно использовать обратные вызовы? Не могли бы вы попытаться использовать прослушиватель событий в кнопке отправки, чтобы вызвать эту функцию?

function doSomething(){ var text = document.querySelectory("#answer").val; console.log("You answered "+text) }

<input id="answer" type="text"><button onclick="doSomething()">

+0

Создайте уменьшенный тестовый пример на https://plnkr.co/ или какой-либо подобной службе, чтобы мы могли проверить, как это должно работать. – alanmbarr

+0

В вашем примере я должен переписать все функции, в которых используется подтверждение. Я хочу создать локальную функцию, которая автоматически заменит подтверждение JS. –

2

window.confirm является синхронной функцией (ожидает ввод данных пользователя), так как он изначально реализован. Вы можете переопределить эту функцию, но нет возможности синхронно реализовать диалог подтверждения (без обратных вызовов). Вы должны рассмотреть возможность использования bootstrap modal или что-то еще

+0

Модаль не ждет ответа пользователя перед продолжением –

+0

@TarlanMamedzade рассмотрит этот ответ: «Невозможно реализовать синхронный диалог подтверждения (без обратных вызовов). " Любая пользовательская замена для диалогового окна блокировки, такого как предупреждение или подтверждение, не будет синхронной и ждать ввода пользователя. – traktor53

+0

Мне не нужен этот метод. Мне нужен результат. Можете ли вы предложить способ сделать это, описав его глубже? –

Смежные вопросы