2017-06-15 24 views
0

私は非常にシンプルな解決策を知っているが、コードのこの部分についているので、1,2,3のいずれかを選択してそのウェブサイトに行く必要があります。選択肢のバリデーション

私はユーザーが1 2または3を選択する必要があります。ユーザー選択1 2または3は、正しく入力された場合、出力エラー以下の場合には、高さと幅を入力するよう促します。それは選択肢を検証する

function redirect() { 
 
    
 
    var choice=0; 
 
\t var height; 
 
\t var width; 
 
\t var url = Number (prompt("Pick a site? 1. xxxx 2. xxxx 3. xxx", "")); 
 
    \t switch (url) 
 
\t 
 
\t \t \t \t 
 
\t { \t \t \t \t 
 
\t case 1: 
 
\t \t \t 
 
\t \t \t while(!isFinite(height) || height < 500) { 
 
    \t \t height = prompt("Enter a height > 500"); \t 
 
\t \t \t } 
 
\t \t \t \t \t 
 
\t \t \t while(!isFinite(width) || width < 500) { 
 
    \t \t width = prompt("Enter a width > 500"); 
 
\t \t \t } 
 
\t \t window.open(url="http://www.xxx", "myWindow","status = 1, height = 500, width = 500, resizable = 0"); \t \t \t 
 
\t \t break; 
 
\t \t \t 
 
\t case 2: 
 
\t \t \t 
 
\t \t \t while(!isFinite(height) || height < 500) { 
 
    \t \t height = prompt("Enter a height > 500"); 
 
\t \t \t } 
 
\t \t \t \t \t 
 
\t \t \t while(!isFinite(width) || width < 500) { 
 
    \t \t width = prompt("Enter a width > 500"); 
 
\t \t \t } 
 
\t \t window.open(url="http://xxx", "myWindow","status = 1, height = 500, width = 500, resizable = 0"); 
 
\t \t break; 
 
\t \t \t \t 
 
\t case 3: 
 
\t \t \t 
 
\t \t \t while(!isFinite(height) || height < 500) { 
 
    \t \t height = prompt("Enter a height > 500"); 
 
\t \t \t } 
 
\t \t \t \t \t 
 
\t \t \t while(!isFinite(width) || width < 500) { 
 
    \t \t width = prompt("Enter a width > 500"); 
 
\t \t \t } 
 
\t \t 
 
\t \t window.open(url="http://www.xxx", "myWindow","status = 1, height = 500, width = 500, resizable = 0"); 
 
\t \t break; 
 
\t \t 
 
\t \t default: 
 
\t \t alert("Please enter number 1, 2, or 3 to select a website"); \t 
 
\t \t return false; \t \t 
 
\t \t }// end switch 
 
\t 
 
\t \t return; 
 
}

<button type="button" onclick="redirect()" onsubmit="return validateForm()">Go to other websites</button> 
+1

、どのような動作しません。また、どのようなものが選ばれたURLを設定し、ユーザーの選択肢を検証するためにswitch文を使用について –

+0

申し訳ありませんが起こることが予想さを説明あなたが有効な選択肢が得られるまで続行しないでください。すべてが動作しているだけで、すべてのことを検証する必要があります –

+0

スニペットに変換できますか? '<>'ボタンをクリックしてください。何が間違っているのかを簡単に見つけることができます。なぜなら、あなたには含まれていない関数、つまり 'isFinite'もあるからです。一見すると、あなたはすでに 'while'ループでそれをやっています。だから私は実際に何がうまくいかないのか分かりません(特に実際の例はありません)。 –

答えて

0

あなたはすでにwhileループを持っています。だから、私はあなたが同様のロジックを使ってチェックしただけではなかったのです。 return

var url; 

while (url === undefined || [1,2,3].indexOf(url) === -1) 
{ 
    url = prompt("Pick a site? 1. xxxx 2. xxxx 3. xxx", ""); 
    if (url === null) 
    { 
    return false; 
    } 
    url = Number(url); 
} 

url === nullは、彼らがキャンセルまたはW/Eすることにした場合、ユーザーが実際に無限プロンプトループを終了できるようにすることです。あなたはあなたの幅と高さにもこれを使うべきです(それはあなた次第ですが)。

以下のスニペット:

function redirect() { 
 
    
 
    var choice=0; 
 
\t var height; 
 
\t var width; 
 
    var url; 
 
\t 
 
    let i = 0; 
 
    while (url === undefined || [1,2,3].indexOf(url) === -1) 
 
    { 
 
    url = prompt("Pick a site? 1. xxxx 2. xxxx 3. xxx", ""); 
 
    if (url === null) 
 
    { 
 
     return false; 
 
    } 
 
    url = Number(url); 
 
    } 
 
    \t 
 
    switch (url) \t \t \t 
 
\t { \t \t \t \t 
 
\t case 1: 
 
\t \t \t 
 
\t \t \t while(!isFinite(height) || height < 500) { 
 
    \t \t height = prompt("Enter a height > 500"); \t 
 
\t \t \t } 
 
\t \t \t \t \t 
 
\t \t \t while(!isFinite(width) || width < 500) { 
 
    \t \t width = prompt("Enter a width > 500"); 
 
\t \t \t } 
 
\t \t window.open(url="http://www.xxx", "myWindow","status = 1, height = 500, width = 500, resizable = 0"); \t \t \t 
 
\t \t break; 
 
\t \t \t 
 
\t case 2: 
 
\t \t \t 
 
\t \t \t while(!isFinite(height) || height < 500) { 
 
    \t \t height = prompt("Enter a height > 500"); 
 
\t \t \t } 
 
\t \t \t \t \t 
 
\t \t \t while(!isFinite(width) || width < 500) { 
 
    \t \t width = prompt("Enter a width > 500"); 
 
\t \t \t } 
 
\t \t window.open(url="http://xxx", "myWindow","status = 1, height = 500, width = 500, resizable = 0"); 
 
\t \t break; 
 
\t \t \t \t 
 
\t case 3: 
 
\t \t \t 
 
\t \t \t while(!isFinite(height) || height < 500) { 
 
    \t \t height = prompt("Enter a height > 500"); 
 
\t \t \t } 
 
\t \t \t \t \t 
 
\t \t \t while(!isFinite(width) || width < 500) { 
 
    \t \t width = prompt("Enter a width > 500"); 
 
\t \t \t } 
 
\t \t 
 
\t \t window.open(url="http://www.xxx", "myWindow","status = 1, height = 500, width = 500, resizable = 0"); 
 
\t \t break; 
 
\t \t 
 
\t \t default: 
 
\t \t break; 
 
\t \t }// end switch 
 
\t 
 
\t \t return; 
 
}
<button type="button" onclick="redirect()" onsubmit="return validateForm()">Go to other websites</button>

関連する問題