@samuser
programmer

Как проверить одно временно всех полей формы?

Есть форма с 3 полями
<form id="Parent_f" method="post" action="summa.php">
                        <div class="text">
                            <input type="text" name="amount" id="amount" />
                        </div>
                        <div class="text">
                            <input type="text" name="term" id="term" />
                        </div>
                        <div class="text">
                            <input type="text" name="rate" id="rate" />
                        </div>
         </form>

Проверяю с помощью JQuery
jQuery(document).ready(function() {
        $("#Parent_f").submit(function (e) {

        var x = $("#amount").val();
        var y = $("#term").val();
        var r = $("#rate").val();

        var intRegex = /[0-9 -()+]+$/;

        if((x.length < 0) || (!intRegex.test(x))){
            $("#amount").css("border", "1px solid red");
            return false;
        }
        if (x == '') {
            $("#amount").css("border", "1px solid red");
            return false;
        }
        if (x == 0) {
            $("#amount").css("border", "1px solid red");
            return false;
        }

        if((y.length < 0) || (!intRegex.test(y))){
            $("#term").css("border", "1px solid red");
            return false;
        }
        if (y == '') {
            $("#term").css("border", "1px solid red");
            //$("#term").html("<p>*данное поле обязательно для заполнения</p>");
            return false;
        }
        if (y == 0) {
            $("#term").css("border", "1px solid blue");
            return false;
        }

});

Этот код работает последовательно. Т. е. return false; не дает выполнить следующее действие.
Как мне проверить одновременно всех полей ?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
@kalatushki
Вам нужно пройти в цикле по все полям и сделать проверку и только если есть ошибки прерывать обработку
Можно сделать как-то так https://jsfiddle.net/h1sok4hc/1/
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
видимо не надо делать return в таком случае?
Ответ написан
alex-1917
@alex-1917
Дам как проверить, как отправить - читай про serialize()
Мой вариант позволяет проверить хоть миллион инпутов в форме, то что выше дали - надо каждый раз писать код для каждой формы)))
jQuery(".form_btn input").on("click", function(){
	var ok = true;
	var form = jQuery(this).parent().parent('form');
	jQuery(form).find('input[type="text"]').each(function() {//тут можно еще и textarea в проверку включить
		if(jQuery(this).val() == '') {
			ok = false;
			jQuery(this).addClass('error');
		}
		else {
			jQuery(this).removeClass('error');
		}
	});
	if( ok ) {
		var data = [];
		//тут сериализуй форму в массив)))
		jQuery.ajax({
		type: "POST",
		url: "order.php",
		data:  data,
			success: function(data){
				jQuery(form).find('input[type="text"], textarea').attr('value', '');
				jQuery(form).fadeOut('fast', function(){
					jQuery(this).before('<div class="send_ok">спасибо. вась!</div>');
				});
			}
		});
	}        
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы