2016-10-01 9 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

例では、confirmが使用されているすべての関数を書き直す必要があります。私は欲しいのは、自動的にJSの代わりになるローカル関数を作成することです –

2

window.confirmそれがネイティブに実装されているため機能同期(ユーザー入力を待つ)です。この関数を再定義することはできますが、確認ダイアログを同期的に(コールバックなしで)実装する方法はありません。 bootstrap modalなどを使用することを検討する必要があります

+0

モーダルはユーザーの応答を待たずに続行する前に –

+0

@TarlanMamedzadeはこの答えを見直します: "確認ダイアログを同期的に(コールバックなしで)実装する方法はありません。 "アラートや確認のようなブロッキングダイアログの代わりに書き込まれたユーザは、同期しておらず、ユーザの入力を待つ。 – traktor53

+0

私はこの方法を気にしません。私は結果が必要です。それをもっと深く説明する方法を提案してもらえますか? –

関連する問題