Я пытаюсь подтвердить мои собственные два поля. Когда они пусты, я хотел бы показать сообщение.
Проблема в том, что условие "если" не выполняется должным образом, и я не знаю, почему.
Это HTML-код:
<div id="switchingform">
<label for="currentsupplier">Who is your current supplier?</label>
<input type="text" name="currentsupplier" id="currentsupplier"/><br />
<span class="validateText" id="validateSupplier"><p>Please enter your current supplier</p></span>
<label for="postcode">What is your post code?</label>
<input type="text" name="postcode" id="postcode"/><br />
<span class="validateText" id="validatePostCode"><p>Please enter your post code</p></span>
</div>
И это код JQUERY:
$("#telecomBusNext").click(function(){
if($("#currentsupplier").val().length < 1 || $("#postcode").val().length < 1) {
$("#validateSupplier").fadeIn(400);
$("#validatePostCode").fadeIn(400);
return false;
} else if($("#currentsupplier").val().length > 1 || $("#postcode").val().length < 1) {
$("#validatePostCode").fadeIn(400);
$("#validateSupplier").fadeOut(400);
return false;
} else if($("#currentsupplier").val().length < 1 || $("#postcode").val().length > 1) {
$("#validatePostCode").fadeOut(400);
$("#validateSupplier").fadeIn(400);
return false;
} else {
$("#validateSupplier").fadeOut(400);
$("#validatePostCode").fadeOut(400);
}
});
Заранее спасибо.
Измените ||
с &&
и он должен работать. Вы определяете два одинаковых условия в двух разных условностях. Ваша логика неверна.
$("#telecomBusNext").click(function(){
//THIS------------------------------------> <--ALSO HERE ----------------->
if($("#currentsupplier").val().length < 1 || $("#postcode").val().length < 1) {
$("#validateSupplier").fadeIn(400);
$("#validatePostCode").fadeIn(400);
return false; //<--AND HERE is the same----->
} else if($("#currentsupplier").val().length > 1 || $("#postcode").val().length < 1) {
$("#validatePostCode").fadeIn(400);
$("#validateSupplier").fadeOut(400);
return false;
//AND THIS are the same when using || ---------->
} else if($("#currentsupplier").val().length < 1 || $("#postcode").val().length > 1) {
$("#validatePostCode").fadeOut(400);
$("#validateSupplier").fadeIn(400);
return false;
} else {
$("#validateSupplier").fadeOut(400);
$("#validatePostCode").fadeOut(400);
}
});
Поскольку оба условных выражения включают в себя $("#currentsupplier").val().length < 1
и в случае с HERE оба включают $("#postcode").val().length < 1
, если один из них true Jquery не знаю, какая из двух операций, отмеченных выше, должна быть запущена.
РЕДАКТИРОВАТЬ :
Вот созданный JSFiddle.
Дайте мне знать, если это то, что вам нужно.
#telecomBusNext
элемент #telecomBusNext
вы нажимаете, и, возможно, я сделаю скрипку, чтобы показать вам, как это сделать.
Проблема с вашим кодом заключается в том, что вы используете ||
(OR), когда вы должны использовать &&
(AND).
Но почему это так сложно, проверяя все комбинации? Проверьте два поля отдельно, и это будет намного проще:
$("#telecomBusNext").click(function(){
var supplierValid = $("#currentsupplier").val().length > 0;
var postcodeValid = $("#postcode").val().length > 0;
$("#validateSupplier").fadeToggle(!supplierValid);
$("#validatePostCode").fadeToggle(!postcodeValid);
return supplierValid && postcodeValid;
});
||
с&&
и это должно работать. Вы определяете два одинаковых условия в двух разных условных выражениях. Ваша логика неверна.