【问题标题】:Validate form fields with Ajax calls to a server - Learning Ajax使用对服务器的 Ajax 调用验证表单字段 - 学习 Ajax
【发布时间】:2015-04-07 03:17:14
【问题描述】:

我需要使用 Ajax 验证我的表单字段。
我现在拥有的是 javascript 验证。 我想知道是否可以重用我的 javascript 代码并实现 Ajax

html 表单

<form method="post" action="ajax/validation.php" class="ibm-row-form" id="registerform">
        <h2 class="ibm-inner-subhead">Basic registration information</h2>                               
        <p>
               First name: <span class="ibm-required">*</span><br/>
               <input id="firstName" name ="firstName" size="36" type="text" onblur=" validateFirstName();" />
               <span id="errorFName" class="error">First name is required</span>        
        </p>
        <p>                         
               Last name:<span class="ibm-required">*</span><br/>
               <input name="lastName" id="lastName" size="36" type="text" onblur="validateLastName();" />
               <span id="errorLName" class="error">Last name is required</span>
        </p>
        <input id="ibm-submit" name="ibm-submit" class="ibm-btn-arrow-pri" value="Register" type="submit" />
        <input value="Cancel" type="button" name="ibm-cancel" class="ibm-btn-cancel-sec" onclick="window.location(window.location.href = '#')" /> 
</form>

JavaScript 验证(无 Ajax)

function validateFirstName(){
    var fName = document.getElementById("firstName").value;
    if(fName==""){
          errorFName.style.visibility = "visible";
          return false;
    } 
    errorFName.style.visibility = "hidden";
}

function validateLastName(){
    var LName = document.getElementById("lastName").value;
    if(LName==""){
         errorLName.style.visibility = "visible";
         return false;
    } 
    errorLName.style.visibility = "hidden";
}

Ajax 验证(这就是我想要做的)

$('form.ajax').on('submit',function(){
       var that = $(this);
       url = that.attr('action');
       method = that.attr('method');
       data = {};
       that.find('[name]').each(function(index,value){
             var that = $(this),
             name = that.attr('name'),
             value = that.val();
             data[name] = value;
       });
       $.ajax({
             url: url,
             type: type,
             data : data,
             success: function(response){
                   console.log(response);
             }
       });
       return false;
});

那么,我应该如何处理在我的 Javascript 代码中实现 Ajax 的解决方案。如何合并这些代码以验证表单域?

谢谢!

【问题讨论】:

    标签: javascript php jquery ajax validation


    【解决方案1】:

    你不能在 ajax 验证中添加 no ajax 部分吗,像这样:

    $('form.ajax').on('submit',function(){
       var that = $(this);
       url = that.attr('action');
       method = that.attr('method');
       data = {};
       that.find('[name]').each(function(index,value){
             var that = $(this),
             name = that.attr('name'),
             value = that.val();
             data[name] = value;
       });
    
       // CODE ADDED HERE
       if(validateFirstName() && validateLastName()){
           $.ajax({
               url: url,
               type: type,
               data : data,
               success: function(response){
                   console.log(response);
               }
            });
        }
        return false;
    });
    
    function validateFirstName(){
        var fName = document.getElementById("firstName").value;
        if(fName==""){
            errorFName.style.visibility = "visible";
            return false;
        } 
        errorFName.style.visibility = "hidden";
        // CODE ADDED HERE
        return true;
    }
    
    function validateLastName(){
        var LName = document.getElementById("lastName").value;
        if(LName==""){
            errorLName.style.visibility = "visible";
            return false;
        } 
        errorLName.style.visibility = "hidden";
        // CODE ADDED HERE
        return true;
    }
    

    【讨论】:

    • 谢谢。但是当我这样做时它不会进行 ajax 验证。
    • @IsadoraAlmeida Ajax 验证是什么意思?您想在服务器端进行验证,但使用 Ajax 提交?
    • 我需要通过对服务器的 ajax 调用来验证表单字段。
    • @IsadoraAlmeida 你能说得更清楚一点吗?您想在用户提交之前验证输入吗?
    • 对不起。只是教授的作业笔记很差。但据我了解,我必须在 servlet 中进行 ajax 验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    相关资源
    最近更新 更多