`

onsubmit 校验表单时利用 ajax 的 return false 无效问题

阅读更多

      前几天,在校验一个表单数据时用到ajax时,遇到 return false 无效问题。

/**
 * 表单提交校验
 **/
function onSubmit(){
    if($('#name').val().length<2){
        alert("名称请不少于两个汉字");
        return false;
    }
    var t = new Date().getTime();
    $.ajax({
        type: "POST",
        url: "/users/checkrepeat/",
	  data: "name=" + $('#name').val() + "&time=" + t,
        success:function(res){
            if(res == 'exists'){
                alert("名称已存在,请修改.");
                return false;
            }
        }
    });
}

问题原因:

 

1. ajax时return false 的function与onsubmit()不是同一个函数;

2. 在ajax执行时,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)。

 

修改后的代码:

/**
 * 表单提交校验
 **/
function onSubmit(){
    if($('#name').val().length<2){
        alert("名称请不少于两个汉字");
        return false;
    }    
    var flag = true;
    var t = new Date().getTime();
    $.ajax({
        type: "POST",
        async:false,  // 设置同步方式
        cache:false,
        url: "/users/checkrepeat/",
	  data: "name=" + $('#name').val() + "&time=" + t,
        success:function(res){
            if(res == 'exists'){
                alert("名称已存在,请修改.");
                flag = false;
            }
        }
    });
    if(!flag)
        return false;
} 
0
0
分享到:
评论

相关推荐

    浅析onsubmit校验表单时利用ajax的return false无效问题

    代码如下:/** * 表单提交校验 **/function onSubmit(){ if($(‘#name’).val().length&lt;2){ alert&#40;“名称请不少于两个汉字”&#41;; return false; } var t = new Date().getTime(); $.ajax({ type: ...

    struts2实现服务器端校验示例

    在这个"struts2实现服务器端校验示例"中,我们将探讨如何在Struts2中实现高效的服务器端数据校验,并结合Dojo实现类似AJAX的实时验证。 首先,Struts2的校验框架是基于Action类的,每个Action类都可以关联一个或多...

    js表单验证大全,js提交表单

    - **return false**: 在验证函数中返回`false`也可达到阻止提交的效果。 4. **表单验证策略** - **客户端验证**: 使用JavaScript在用户端进行,速度快但可被绕过。 - **服务器端验证**: 必不可少的安全措施,...

    js验证输入不能为空

    "js验证输入不能为空"这个主题涉及到确保用户在提交表单时必须填写特定字段,避免提交空值导致的数据不完整或无效。下面我们将深入探讨如何使用JavaScript进行这种验证。 首先,我们需要了解JavaScript中的事件监听...

    ajax实现用户名校验的传统和jquery的$.post方式(实例讲解)

    &lt;form action="..." method="post" onsubmit="return checkForm()"&gt; ... 用户名"&gt; &lt;span id="span"&gt;&lt;/span&gt; ... ``` #### 步骤2:JavaScript函数`checkUsername` 当用户在用户名输入框失去焦点或按下回车时,...

    用js实现的表单验证

    在网页开发中,表单验证是一项至关重要的任务,它确保用户输入的数据符合预期的格式和规则,从而提高用户体验并减少服务器端的处理负担。本文将详细介绍如何使用JavaScript来实现表单验证,尤其针对用户名、密码和...

    JS--几种表单验证方式

    return false; } return true; } ``` 2. **使用jQuery库进行验证**: jQuery简化了JavaScript的DOM操作和事件处理,使得表单验证更加简洁。jQuery提供了`validate`插件,可以方便地创建复杂的验证规则。例如...

    基于XML配置的js验证方式

    通常,开发者会使用DOM API或jQuery等库来操作DOM,获取表单元素,并根据XML中的规则添加事件监听器,如`onsubmit`,在用户提交表单时进行验证。 例如,以下是一段简化的JS代码示例,用于读取XML并应用验证规则: ...

    asp.net jQuery Ajax用户登录功能的实现

    这个功能是通过将登录表单封装在一个模拟对话框中,利用Ajax无刷新提交数据,从而提供更友好的用户体验。 首先,让我们看看主页面上的代码片段。这里使用了一个`asp:HyperLink`控件作为登录链接,它的`NavigateUrl`...

    React-Validation-Form:React作出的验证表格

    4. **回调函数**:提供`onChange`、`onSubmit`等回调函数,使得在表单操作时可以执行自定义逻辑,如更新其他组件的状态或发送Ajax请求。 5. **自定义组件**:如果你需要对特定输入元素进行特殊处理,可以通过`React...

    使用JavaScript验证起始日期和截止日期

    在Web开发中,确保用户输入的数据有效性和准确性是至关重要的,特别是当涉及到日期范围时。JavaScript作为一种客户端脚本语言,可以用于实时验证用户的输入,从而提高用户体验并减轻服务器端的压力。本文将深入探讨...

    jQuery.form.js的使用详解

    jQuery.form.js是一个基于jQuery开发的插件,专门用来处理表单提交的场景,特别是在异步提交表单数据并需要处理返回的JSON数据时提供了极大的便利。传统的HTML表单提交会遇到一个问题:当表单提交后,浏览器会根据...

    java面试题

    dateRegex.test(dateStr)) return false; const [year, month, day] = dateStr.split('-').map(Number); const date = new Date(year, month - 1, day); return date.getFullYear() === year && date.getMonth()...

    form-validation

    - **表单事件**:如`onsubmit`、`onchange`等,这些事件在用户与表单交互时触发,可以用来执行验证逻辑。 - **表单控件**:包括`&lt;input&gt;`、`&lt;select&gt;`、`&lt;textarea&gt;`等,它们用于获取用户输入。 2. **JavaScript...

    使用jquery.upload.js实现异步上传示例代码

    4. **回调函数的定义**:在`$.upload`方法中可以定义多个回调函数,包括上传之前`onSend`、上传时`onSubmit`和上传之后`onComplete`。`onSend`函数可以用于上传前的校验,若返回`true`则上传继续,否则可以中断上传...

Global site tag (gtag.js) - Google Analytics