前几天,在校验一个表单数据时用到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;
}
分享到:
相关推荐
代码如下:/** * 表单提交校验 **/function onSubmit(){ if($(‘#name’).val().length<2){ alert(“名称请不少于两个汉字”); return false; } var t = new Date().getTime(); $.ajax({ type: ...
在这个"struts2实现服务器端校验示例"中,我们将探讨如何在Struts2中实现高效的服务器端数据校验,并结合Dojo实现类似AJAX的实时验证。 首先,Struts2的校验框架是基于Action类的,每个Action类都可以关联一个或多...
- **return false**: 在验证函数中返回`false`也可达到阻止提交的效果。 4. **表单验证策略** - **客户端验证**: 使用JavaScript在用户端进行,速度快但可被绕过。 - **服务器端验证**: 必不可少的安全措施,...
"js验证输入不能为空"这个主题涉及到确保用户在提交表单时必须填写特定字段,避免提交空值导致的数据不完整或无效。下面我们将深入探讨如何使用JavaScript进行这种验证。 首先,我们需要了解JavaScript中的事件监听...
<form action="..." method="post" onsubmit="return checkForm()"> ... 用户名"> <span id="span"></span> ... ``` #### 步骤2:JavaScript函数`checkUsername` 当用户在用户名输入框失去焦点或按下回车时,...
在网页开发中,表单验证是一项至关重要的任务,它确保用户输入的数据符合预期的格式和规则,从而提高用户体验并减少服务器端的处理负担。本文将详细介绍如何使用JavaScript来实现表单验证,尤其针对用户名、密码和...
return false; } return true; } ``` 2. **使用jQuery库进行验证**: jQuery简化了JavaScript的DOM操作和事件处理,使得表单验证更加简洁。jQuery提供了`validate`插件,可以方便地创建复杂的验证规则。例如...
通常,开发者会使用DOM API或jQuery等库来操作DOM,获取表单元素,并根据XML中的规则添加事件监听器,如`onsubmit`,在用户提交表单时进行验证。 例如,以下是一段简化的JS代码示例,用于读取XML并应用验证规则: ...
这个功能是通过将登录表单封装在一个模拟对话框中,利用Ajax无刷新提交数据,从而提供更友好的用户体验。 首先,让我们看看主页面上的代码片段。这里使用了一个`asp:HyperLink`控件作为登录链接,它的`NavigateUrl`...
4. **回调函数**:提供`onChange`、`onSubmit`等回调函数,使得在表单操作时可以执行自定义逻辑,如更新其他组件的状态或发送Ajax请求。 5. **自定义组件**:如果你需要对特定输入元素进行特殊处理,可以通过`React...
在Web开发中,确保用户输入的数据有效性和准确性是至关重要的,特别是当涉及到日期范围时。JavaScript作为一种客户端脚本语言,可以用于实时验证用户的输入,从而提高用户体验并减轻服务器端的压力。本文将深入探讨...
jQuery.form.js是一个基于jQuery开发的插件,专门用来处理表单提交的场景,特别是在异步提交表单数据并需要处理返回的JSON数据时提供了极大的便利。传统的HTML表单提交会遇到一个问题:当表单提交后,浏览器会根据...
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()...
- **表单事件**:如`onsubmit`、`onchange`等,这些事件在用户与表单交互时触发,可以用来执行验证逻辑。 - **表单控件**:包括`<input>`、`<select>`、`<textarea>`等,它们用于获取用户输入。 2. **JavaScript...
4. **回调函数的定义**:在`$.upload`方法中可以定义多个回调函数,包括上传之前`onSend`、上传时`onSubmit`和上传之后`onComplete`。`onSend`函数可以用于上传前的校验,若返回`true`则上传继续,否则可以中断上传...