2016-05-26 2 views
-2

У меня есть форма форма начальной загрузки, как показано нижеjQuery: Как сделать проверку в jquery перед отправкой формы?

<form id="loginForm" method="post" action="" role="form" class="ajax"> 
    <div class="form-group"> 
     <label for="userName"></label> 
     <input type="text" class="form-control" id="usrName"> 
    </div> 

    <div class="form-group"> 
     <label for="passWrd"></label> 
     <input type="password" class="form-control" id="passWrd"> 
    </div> 

    <div class="form-group"> 
     <button class="btn btn-default" type="button" id="loginButton">Login</button>  
    </div> 

Я делаю форму проверки в моей JQuery, как показано ниже. Как я могу вызвать метод submit() в моем коде? Как я могу сделать ajax-вызов для отправки содержимого формы после проверки в jQuery.

$(document).ready(function() { 

    function validateInput(id) { 
    if($("#"+id).val()==null || $("#"+id).val()=="") { 
     var div=$("#"+id).closest("div"); 
     div.addClass("has-error"); 
     return false; 
    } else { 
     var div=$("#"+id).closest("div"); 
     div.removeClass("has-error"); 
     div.addClass("has-success"); 
     return false; 
    }  
    } 
    $(#loginButton).click(function() { 
enter code here 
    if(!validateInput("userName")) 
    { 
     return false; 
    } 

    if(!validateInput("passWrd")) 
    { 
     return false; 
    } 

    }); 

}); 

Как я могу позвонить $ .ajax после завершения проверки в моем вышеприведенном коде?

P.S: Я не должен использовать какой-либо плагин jquery для проверки.

+0

Имейте в виду, ваш validateInput() в настоящее время ничего не возвращаются, поэтому, используя что если/else не будет работать. – rsn

+0

При проверке строки обрезайте поле ввода, чтобы убедиться, что пользователь не просто добавил пробелы '$ (" # "+ id) .val(). trim() ==" " ' – miqdadamirali

+0

Вам нужно вернуть true в блоке else вашей функции. Это отсутствует в вашем коде. Кроме того, вы должны использовать оба условия if вместе, используя &&, чтобы, если кто-либо из них не работает, вы можете остановить отправку. –

ответ

0

Этот код проверяет каждое поле ввода.

$(#loginButton).click(function() { 
    if (!$.trim($("input").val()) {  //check ALL input fields, see if they have valid (non-falsy) values 
    alert("some input needs fixin'!"); 
    } else { 
    submit(); //since you mentioned this in your post 
    $.ajax({});//or make an ajax call, or put it inside of a function and call that, the possibilities are endless.. 
    } 
}); 
+0

Мне нужно проверить несколько свойств. Я обновил свой вопрос. Просьба проверить и ответить мне. Спасибо за вашу помощь заранее. – user6131488

+0

Как насчет этого? – rsn

-1

Вы можете использовать плагин this. Это самый лучший и простой в использовании плагин, который я нашел для проверки формы.

+1

причина для downvote? – Sanchit

0

Хотя это можно сделать несколькими способами, используя ваш пример, я вижу, что вы уже возвращаете false при отказе проверки. Возвращает true с конца вашего метода validateInput().

function validateInput(item) { 
    var div=item.closest("div"); 
    if(item.val()==null || item.val()=="") {   
    div.addClass("has-error"); 
    return false; 
    } else { 
    div.removeClass("has-error"); 
    div.addClass("has-success"); 
    return true; 
    } 
} 

Затем в обработчик события щелчка, проверьте возвращаемое значение и вызвать form.submit()

$('#loginButton').click(function() { 
    var isValid = true; 
    $('.form-control').each(function(){ 
     isValid &= validateInput($(this)); 
    }); 
    if (isValid) 
    { 
     var data = $('#loginForm').serialize(); 
     $.ajax({ 
     url: 'your endpoint', 
     type: 'POST', 
     data: data 
     }); 
    } 
}); 

представить форму.

Работает Plunkr.

+0

Мне нужно проверить несколько свойств. Я обновил свой вопрос. Просьба проверить и ответить мне. Спасибо за вашу помощь заранее. – user6131488

+0

Мы работаем с множеством предположений здесь, но при условии, что все ваши поля ввода имеют класс «form-control», приведенный выше код должен работать нормально. Мы могли бы изменить селектор на «ввод». –

0

Попробуйте это:

$(document).ready(function() { 
    function validateInput(id) { 
    var element = $("#"+id); 
    var success = false; 
    if (element.val() == null || element.val().trim() == "") { 
     element.closest("div").addClass("has-error"); 
    } else { 
     var div = element .closest("div"); 
     div.removeClass("has-error"); 
     div.addClass("has-success"); 
     success = true; 
    }  
    return success; 
    } 
    $(#loginButton).click(function() { 
    if (validateInput("usrName")) { 
     $('#loginForm').submit() 
    } 
    }); 

}); 
+0

Мне нужно проверить несколько свойств. Я обновил свой вопрос. Просьба проверить и ответить мне. Спасибо за вашу помощь заранее. – user6131488

0
<div ng-class="{ 'form-group has-error has-feedback' : datos.campo.$invalid && !datos.campo.$pristine, 'form-group has-success has-feedback' : datos.campo.$valid}"> 
    <label class="control-label" for="campo">Modelo</label> 
     <input ng-model="data.campo" name="campo" type="text" class="form-control" id="campo" required> 
     <span ng-class="{'glyphicon glyphicon-remove form-control-feedback':datos.campo.$invalid && !datos.campo.$pristine, 'glyphicon glyphicon-ok form-control-feedback':datos.campo.$valid}"></span> 
    <span ng-show="datos.campo.$invalid && !datos.campo.$pristine" class="col-md-8 center badge badge-danger">Incorrecto</span> 
</div> 

Con Угловая JS эс Мась Facil validar Кампос, Checa este link

Смежные вопросы