2016-10-11 4 views
-1

ユーザーがJavascriptで指定されたプロンプトを閉じるのを防ぐ方法はありますか?プロンプトを閉じることを許可しない

私は変数がnullであるかどうかテストしようとしましたが、一度閉じてしまえば私の条件文にならないと仮定しているため、動作していない(またはわかりません)。プロンプトメッセージでcloseオプションを無効にする方法はありますか?

プロンプトメッセージボックスでユーザーに応答を入力させようとしています。私は主にC#開発者でJSを学んでいます。私はJSでこれをテストする方法を知らない。混乱している気分であることを私に許してください。

助けが必要ですか?読んでいただきありがとうございます。


私のコード:nullため

var login = prompt("Who is this?"); 

if((login.toUpperCase()) !== "password" || (login === null)) { 
alert("BEGIN SHUTDOWN","ERROR"); 
window.close(); 
} else { 
alert("Access Granted."); 
} 
+2

'*ユーザーがJavascriptで指定されたプロンプトを閉じるのを防ぐ方法はありますか?*'本当にうれしいです!それは恐ろしいだろう! – Biffen

+0

ハハハ!私は彼らがプロンプトへの応答を入力しなければならないことを意味します。なぜ誰かが正当な質問を下落させるのか不明です。 – Ashton

+1

プロンプトから返された値を確認してそこから進めることができますが、キャンセル/閉じるオプションを無効にする方法はありません。 – j08691

答えて

1

ユーザがダイアログを閉じると、loginnullとなります。

条件if ((login.toUpperCase()) !== "password" || (login === null)) {は最初login.toUpperCase()を評価しますが、loginが、それは例外がスローされますnullであるので:

Uncaught TypeError: Cannot read property 'toUpperCase' of null(…)

あなたはlogin === null最初かどうかをテストする必要があります。

if ((login === null) || (login.toUpperCase()) !== "password") { 
+0

私は参照してください。 JSは「ライブ」とみなされ、実行前に最初に評価されないためですか?申し訳ありませんが、私はC#とJavaでOOPに慣れています。私はフロントサイドのものに慣れていません! – Ashton

+0

@Ashtonデータが利用可能になる前に状態をどのように評価する必要がありますか?それは他の言語でも同じ問題になります。 –

+0

これはifをテストする前にnull応答を受け取ったことです。ちょうどそれが2番目の条件は、OR文であるため何も意味してはいけません(少なくともjavaやC#では見られない)。 – Ashton

1

チェック。 nullプロンプトが再度表示されるか、ユーザーが都合のよいときに続行できるようにメッセージを表示してください。

ネイティブモーダル(promptおよびalertなど)はかなり粗いです。自分自身を実装したり、ライブラリを使用することを検討するだけでも十分な場合は、

例:https://jsfiddle.net/37kw50wb/


<div id="start-container"> 
    <input id="start" type="button" value="Start"/> 
</div> 
<div id="continue-container" style="display: none;"> 
    Please continue when you're ready to enter a value: 
    <input id="continue" type="button" value="Continue"/> 
</div> 

document.getElementById("start").addEventListener("click", function() { 
    document.getElementById("start-container").style.display = "none"; 
    do_prompt(); 
}); 

function do_prompt() { 
    var input; 
    input = prompt("Enter something"); 
    if (input === null) { 
    document.getElementById("continue-container").style.display = ""; 
    } else { 
    // we have a value, continue your program here 
    alert("Thank you"); 
    } 
} 

document.getElementById("continue").addEventListener("click", function() { 
    do_prompt(); 
}); 
+0

私の単純なコード例を追加しました。nullのテストは機能していません。どんな考え?ありがとうございます – Ashton

+0

私のコード例を参照してください。 'login.toUpperCase'は' login'が 'null'の場合にエラーを投げるため、あなたのコードは_work_しません。 'ヌル'を最初にチェックし、 'login.toUpperCase'をレイジーまたは(' || ')でチェックしてください。 – Halcyon

0

あなたは空の文字列をチェックし、再度プロンプトを作成することができます。以下の例を参照してください。

var msg = prompt("Write something here:"); 
while(msg === "" || msg === null) 
{ 
    //prompt again 
} 

ユーザーが何も入力しなくてもOKをクリックすると、空の文字列が表示されます。ユーザーがキャンセルをクリックすると、NULLが発生します。

+1

ユーザが '' "を返すのではなく、' 'null''を返すと、つまり、 '' ''や無効な値がないかどうかチェックする価値があるかもしれません。 – Halcyon

+1

ボックス内に何も置かずに「OK」をクリックすると、「」が返されます。 – Libby

+0

はい、何も入力せずにプロンプ​​トを閉じると何が起こるのでしょうか。 – Halcyon

0

作成したい場合クロージャを防ぐプロンプトを表示するには、javascript alert機能を使用しないでください。モーダルを使用します。それは基本的にあなたのページの一部であるプロンプトです。 http://www.w3schools.com/bootstrap/bootstrap_modal.asp

関連する問題