이 데모를 보고 부울 플래그 ( var proceed = false;
) 의 상태를 제대로 변경할 수없는 이유를 알려주세요.
if (emailInput($('#email')) && emptyPass($('#password'))) {}
보시다시피 emailInput()
AND emptyPass()
반환 여부를 확인한 inputData
다음 Boolean을 변경 true
하지만 코드는 emailInput()
두 입력이 비어있을 때만 작동하는 것 같습니다 ! (단, 사용자가 이메일을 입력하면 비밀번호 오류 메시지가 나타납니다.)
$(function () {
var proceed = false;
var emailRegex = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
function emailInput(elem) {
inputData = $.trim(elem.val());
if (inputData == "") {
elem.parent().after('<div class="alert alert-danger err" role="alert">Field Can Not Be Empty</div>').slideDown("slow");
} else if (!emailRegex.test(inputData)) {
elem.parent().after('<div class="alert alert-danger err" role="alert">Please Enter Valid Email Address</div>').slideDown();
} else {
return inputData;
}
}
function emptyPass(elem) {
inputData = $.trim(elem.val());
if (inputData == "") {
var $div = $('<div/>', {
class: 'alert alert-danger err',
role: 'alert'
}).hide().text('No Empty');
$div.insertAfter(elem.parent());
$div.slideDown("slow");
} else {
return inputData;
}
}
$("#login").on("click", function (e) {
$(".err").hide();
if (emailInput($('#email')) && emptyPass($('#password'))) {
tempEmail = $('#email').val();
tempPass = $('#password').val();
proceed = true;
}
if (proceed) {
var data = 'email=' + tempEmail + '&pass=' + tempPass;
console.log(data);
}
e.preventDefault();
});
});
@import url("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css");
body {
padding:50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<form accept-charset="UTF-8" role="form" id="login-form" method="post">
<fieldset>
<div class="form-group input-group" id="emailBox"> <span class="input-group-addon">
@
</span>
<input class="form-control" placeholder="Email" name="email" type="email" id="email">
</div>
<div class="form-group input-group" id="passBox"> <span class="input-group-addon">
<i class="glyphicon glyphicon-lock">
</i>
</span>
<input class="form-control" placeholder="Password" name="password" type="password" id="password">
</div>
<div class="form-group">
<button type="submit" id="login" class="btn btn-primary btn-block">Access</button>
</button>
</fieldset>
</form>
두 가지 : 첫째, .NET을 사용하여 지역 변수 ( proceed
, inputData
) 를 선언해야합니다 var
. 둘째, &&
연산자는 왼손 표현식이 성공하는 경우에만 오른손 표현식을 평가 한다는 것을 이해해야 합니다. 이메일 주소가 비어 있거나 유효하지 않은 경우 &&
는 중지되고 비밀번호 필드는 전혀 테스트되지 않습니다.
양쪽이 다음과 같이 테스트되는지 확인할 수 있습니다.
var proceed = true;
if (!emailInput($('#email')))
proceed = false;
if (!emptyPass($('#password')))
proceed = false;
그 후, proceed
될 것입니다 true
이메일 주소와 비밀번호가 모두 OK 경우에만.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다