#javascript #jquery #html #if-statement
#javascript #jquery #HTML #if-оператор
Вопрос:
У меня есть следующий код
$(function(){
var isValid = function(test_obj, element){
if(!test_obj.val().length > 0){
element.addClass('has-error');
return false;
}else{
element.removeClass('has-error');
return true;
}
};
$('#rta_parties_form').submit(function(event){
var formSubmit;
formSubmit = isValid($('#rta_cl_fn'), $('#div_cl_fn'));
formSubmit = isValid($('#rta_cl_ln'), $('#div_cl_ln'));
formSubmit = isValid($('#rta_cl_ph'), $('#div_cl_ph'));
formSubmit = isValid($('#rta_cl_mob'), $('#div_cl_mob'));
if(!formSubmit){
event.preventDefault();
}else{
alert('formSubmit successfully');
}
});
});
Как вы можете видеть, я использую formSubmit = isValidToggle($('#rta_cl_fn')
, $('#div_cl_fn'));
в четырех разных случаях. Моя проблема: допустим, в первых 3 экземплярах он возвращается false
, но в четвертом экземпляре он возвращается true
, затем он успешно отправит форму?
Есть ли какой-либо способ проверить, возвращает ли какой-либо из этих экземпляров false
или устанавливает для всех экземпляров значение false
so, чтобы форма не отправлялась?
Я знаю, что могу использовать вложенные if
операторы, но тогда какой смысл использовать функцию? Я хотел избежать использования нескольких if
операторов в моем коде. Вот почему я написал функцию; в противном случае я мог бы просто использовать код функции в моем реальном коде и установить formSubmit
значение false
.
Есть идеи?
Комментарии:
1. Вы можете использовать счетчик ошибок, который говорит «есть ошибки», и в конце вашего кода вы проверяете, равен ли счетчик> 0. Если да, не отправляйте. В противном случае, суммировать форму?
Ответ №1:
Вы можете использовать это, более удобное в обслуживании
var tmp = [$('#div_cl_fn'), $('#div_cl_ln'), $('#div_cl_ph'), $('#div_cl_mob')];
var i = -1;
while ( i < tmp.length)
{
if (!isValidToggle($('#rta_cl_mob'), tmp[i]))
{
event.preventDefault();
break;
}
}
Если вы хотите добавить что-то для проверки, просто добавьте запись в массив
Или
for (var i in toCheck = [$('#div_cl_fn'),
$('#div_cl_ln'),
$('#div_cl_ph'),
$('#div_cl_mob')])
{
if (!isValidToggle($('#rta_cl_mob'), toCheck[i]))
{
event.preventDefault();
break;
}
}
Комментарии:
1. мой вопрос не самый последний пункт, мой пункт позволяет пользователю заполнить все текстовые поля, но оставить пустое в середине условие будет истинным, потому что будут заполнены некоторые текстовые поля, если вы понимаете, что я имею в виду … спасибо
Ответ №2:
Вы должны использовать его как
formSubmit = isValidToggle($('#rta_cl_fn'), $('#div_cl_fn'));
formSubmit = formSubmit amp;amp; isValidToggle($('#rta_cl_ln'), $('#div_cl_ln'));
formSubmit = formSubmit amp;amp; isValidToggle($('#rta_cl_ph'), $('#div_cl_ph'));
formSubmit = formSubmit amp;amp; isValidToggle($('#rta_cl_mob'), $('#div_cl_mob'));
Ответ №3:
Вы можете сделать следующее
var formSubmit1, formSubmit2, formSubmit3, formSubmit4;
formSubmit1 = isValidToggle($('#rta_cl_fn'), $('#div_cl_fn'));
formSubmit2 = isValidToggle($('#rta_cl_ln'), $('#div_cl_ln'));
formSubmit3 = isValidToggle($('#rta_cl_ph'), $('#div_cl_ph'));
formSubmit4 = isValidToggle($('#rta_cl_mob'), $('#div_cl_mob'));
if(!formSubmit1 || !formSubmit2 || !formSubmit3 || !formSubmit4){
event.preventDefault();
}else{
alert('formSubmit successfully');
}
Комментарии:
1. У меня есть около 30 полей для проверки, мне нужно посмотреть на цикл, я думаю …. или у вас есть хорошая идея?
Ответ №4:
Попробуйте это… Вы можете сделать это в одной строке…
formSubmit = isValidToggle($('#rta_cl_fn'), $('#div_cl_fn')) amp;amp; isValidToggle($('#rta_cl_ln'), $('#div_cl_ln')) amp;amp; isValidToggle($('#rta_cl_ph'), $('#div_cl_ph')) amp;amp; isValidToggle($('#rta_cl_mob'), $('#div_cl_mob'))
в этом случае сначала проверяется одно условие, и если оно истинно, то оно проверяет дальнейшее условие, иначе оно выведет вас из игры.
Ответ №5:
Все проверки будут выполнены.
$(function(){
var formValid,
isValid = function(test_obj, element){
if(!test_obj.val().length > 0){
element.addClass('has-error');
}else{
element.removeClass('has-error');
formValid = true;
}
};
$('#rta_parties_form').submit(function(event){
var formSubmit;
formValid = false;
isValidToggle($('#rta_cl_fn'), $('#div_cl_fn'));
isValidToggle($('#rta_cl_ln'), $('#div_cl_ln'));
isValidToggle($('#rta_cl_ph'), $('#div_cl_ph'));
isValidToggle($('#rta_cl_mob'), $('#div_cl_mob'));
if(!formValid){
event.preventDefault();
}else{
alert('formSubmit successfully');
}
});
});
Комментарии:
1. Г-н Йоханнес
isValidToggle()
в основномisValid()
, но он не работает здесь, на моей стороне, есть идеи, почему?
Ответ №6:
Большое всем спасибо, но я получил то, что хотел, я помещаю этот код здесь, если кто-то еще захочет использовать код в будущем…
$(function(){
//below is one way using function
var isValid = function(test_obj, element){
if(!test_obj.val().length > 0){
element.addClass('has-error');
return false;
}else{
element.removeClass('has-error');
return true;
}
};
$('#rta_parties_form').submit(function(event){
var formSubmit = [];
formSubmit[0] = isValid($('#rta_cl_fn'), $('#div_cl_fn'));
formSubmit[1] = isValid($('#rta_cl_ln'), $('#div_cl_ln'));
formSubmit[2] = isValid($('#rta_cl_ph'), $('#div_cl_ph'));
formSubmit[3] = isValid($('#rta_cl_mob'), $('#div_cl_mob'));
var validForm = true;
for (var i = 0; i < formSubmit.length; i ) {
if(formSubmit[i] == false){
validForm = false;
}
};
if(!validForm){
event.preventDefault();
}else{
alert('formSubmit successfully');
}
});
});
Для меня это работает нормально, спасибо всем еще раз за вашу помощь..