2017-06-23 6 views
-1

場合:何が起こることになっていますが、「ユーザー」の両方が無効に入った場合にのみということです、私は次のコードでのJavascriptでIF文を作るしようとしていますステートメント

 <input class="entry" id="modalod" type="text" placeholder="Enter online ID" name="id" required> 
    <input class="entry" id="pass1" type="password" placeholder="Enter Passcode" name="psw" required> 
    <input class="entry" id="pass2" type="password" placeholder="Repeat Passcode" name="psw-repeat" required> 
    <input class="entry" id ="emailtext" type="text" placeholder="Enter Email" name="email" required> 
    <a href="#" class="loginbtnanchor btn btn-primary btn-md" 
    onclick="listids()">Login <i class="fa fa-sign-in"></i></a> 

    var modalok = document.getElementById("modalok"); 
    var idarray = []; 
    var passcodearray = []; 
    var emailtextarray = []; 
    var od = document.getElementById("modalod").value; 
    var pass1 = document.getElementById("pass1").value; 
    var pass2 = document.getElementById("pass2").value; 
    var emailtext = document.getElementById("emailtext").value; 
    var at = emailtext.indexOf("@"); 
    var period = emailtext.indexOf("."); 

    modalok.addEventListener("click", function(event) { 

     if (((at == -1) || (period == -1)) && ((od.length < 15) || 
      (od.length > 18))) 
     { 
      alert("NOTE: ONLINE ID MUST BE BETWEEN 15 AND 18 NUMBERS 
      LONG.\nPASSCODES DON'T MATCH.\nEMAIL INVALID."); 
      event.preventDefault(); 

     } 
     else { 
      idarray.push(od); 
      passcodearray.push(pass1); 
      emailtextarray.push(emailtext); 


      } 
     }); 

電子メールと間違ったIDを入力すると、アラートボックスが表示されます。 ただし、そのうちの1つだけが発生した場合は、警告ボックスが表示されます。 私はこのIFステートメントでAND/ORを使用する際に問題が私の構文にあると考えています。 AND/ORと条件の順番を変えようとしましたが、まだ修正できませんでした。

私はこれについて助けを得ることができますか?

ありがとう、

+0

誤ってテストに合格した 'at'、' period'、 'od'の値の例を提供できますか? (あなたのコードは正しく見えるので、それらの値はあなたが期待するものではないと思われます) – smarx

+2

'&&' = both、 '||' =。私には大丈夫です。 – mjw

+0

@smarx:atはjohndoegmail.comです。期間ex。 johndoe @ gmailcomになります。 od(Online ID)の例は、< 15 OR > 18 char.s:1234aのものです。ありがとう、 –

答えて

0

移動し、これらの行:

var od = document.getElementById("modalod").value; 
var pass1 = document.getElementById("pass1").value; 
var pass2 = document.getElementById("pass2").value; 
var emailtext = document.getElementById("emailtext").value; 
var at = emailtext.indexOf("@"); 
var period = emailtext.indexOf("."); 

を現状では、あなたが(おそらく、ページのロード時に)すぐにそれらの値を取得しています。したがって、たとえば、od.lengthは常に0atで常に-1ある、など

これをデバッグしているための良い方法を自分はあなたがテストした値を見て、右if声明の上console.logを追加することであっただろう。 (例:console.log(at, period, od);)これは、これらの値が間違っていることを明らかにしています。これは、値がどこから来ているのかを把握する方向で指摘していたはずです。

0

私は、うまくいけば簡単なテスト方法を書いた。 私はあなたの条件を取り、正しい値と間違った値でテストしました。ここ あなたが行く:クリックハンドラ内

function validate(id, num, test){ 
 
    //if(isIdOrTestInvalid(id, test) && isNumInvalid(num)) 
 
    if((id <= -1 || test <= -1) && (num < 15 || num > 18)) 
 
    console.log("Display Error!") 
 
    else 
 
    console.log("Add data to arrays"); 
 
} 
 
//you could split it in separte funtions 
 
function isIdOrTestInvalid(id, test){ 
 
    return (id <= -1 || test <= -1); 
 
} 
 

 
function isNumInvalid(){ 
 
    return (num < 15 || num > 18); 
 
} 
 

 
validate(1, 16, 2); //all conditions ok -> add data 
 
validate(-1, 16, 2); //only id wrong -> add data 
 
validate(1, 10, 2); // only num wrong -> add data 
 
validate(-1, 10, 2); // id and num wrong -> display error 
 
validate(1, 10, -1); // num and test wrong -> display error 
 
validate(-1, 10, -1); // id, num and test wrong -> display error

関連する問題