ライブ検証機能を開発中です。問題は、関数の条件の余波が最後の部分が満たされる前に実行されることです。入場確認インジケータは条件が満たされるまで緑色に変わらないはずですが、そうではありません。aftermathを実行する前にすべての条件を確認する方法
3番目の条件が満たされると、インジケータが緑色に変わります。すべての条件が満たされるまでは、そうしてはいけません。どのように私はこの問題を解決することができるかに関する任意の提案。
私のコードは以下のようになります。
$(function() {
// Pre-define extensions
var xTension = ".com .net .edu";
$("input").keyup(function() {
// Check the position of "@" symbol
var firstLetter = $(this).val().slice(0, 1);
var lastLetter = $(this).val().slice(-1);
var userXs = "No";
// User provided extension
var userX = $(this).val();
userX = userX.substr(userX.indexOf(".") + 0);
if (xTension.indexOf(userX) > -1) {
if (userX != "") {
userXs = "Yes";
} else {
userXs = "No";
}
} else {
userXs = "No";
};
if ($(this).val().indexOf("@") > -1 && (firstLetter != "@") && (lastLetter != "@") && (userXs != "No")) {
$("#input-status").removeClass("red").addClass("green");
} else {
$("#input-status").removeClass("green").addClass("red");
}
});
});
.rack {
width: 250px;
margin: 0 auto;
}
#input-status {
width: 1px;
height: 3px;
with: 0;
display: inline-block;
transition: all 2s;
}
input {
width: 230px;
height: 30px;
text-align: center;
}
#input-status.green,
#input-status.red {
width: 235px;
background: darkGreen;
transition: all 2s;
}
#input-status.red {
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="rack">
<h1>Live Validat.ion</h1>
<input type="text" placeholder="Enter email address">
<div id="input-status">
</div>
</div>
何引数?コードスニペット内のすべての関数定義の引数リストは空です。 – Teemu
一般的なコメント:文字列ではなく、真偽にブール値を使用します。 'indexOf()'の後に '+ 0'を書く必要はありません。 – Barmar
'xTension'に文字列の代わりに配列を使用します。 – Barmar