下一步对Ajax验证内容的字段进行有效性检查
Next-step validity check on fields where contents are validated by Ajax
我一直在整理一个注册表单,它基本上分为三个部分;您填写您的姓名,电子邮件,用户名等,然后您选择的选项(颜色,介绍文字等),然后您的地址详细信息。每个步骤至少有一个字段使用ajax来检查其有效性;例如,检查重复的电子邮件或用户名,建议替代的页面标题等。
这些ajax函数在keyup input blur
上被触发(在短暂的延迟之后),但是我刚刚想到,当有人点击进入注册的下一步时,我也想要验证输入。我通常使用的方法是在当前注册步骤的所有字段上触发blur
,如果附加了.error
,则不允许用户继续前进;然而,在带有ajax侦听器的字段上触发blur
意味着它们不会立即返回错误。
很方便,我没有使用任何类型的插件-我自己编码的一切。当ajax字段检查其输入的有效性时,它们确实有一个.loading
类附加,最终将变成.okay
或.error
类,但在一些屏幕上有2-4个ajax检查的字段,所以我需要等待所有在继续之前进行验证。
我当前的验证函数非常简单:
$(document).on('click', '.step button.validate', function() {
var currentStep = $(this).closest('.step');
// Let's try to trigger those errors ON PORPOISE
currentStep.find('input, select, textarea').trigger('blur');
if (currentStep.find('.error').length) {
// No dice.
alert('This is bad, yo.');
return false;
}
// Everything looks hunky-dory; the form should submit as normal
gotoNextStep();
});
TL;DR我正试图找出如何在做任何事情之前"等待"我所有的ajax字段返回响应。
值得注意的:
整个东西被包裹在一个大的<form>
元素中。这不是每个步骤都要提交的;只有在最后,当每个步骤都被临时验证时。它(非常基本)看起来像这样:http://jsfiddle.net/zVAxs/(HTML标记仅用于说明结构)。
如有任何帮助或指点,我将不胜感激
我不太确定这是你要找的,但是$。ajaxSetup({async: false})是我能想到的。尝试在代码的开头使用它,这样代码将等待请求
如果你可以显式调用ajax验证函数(而不是触发模糊),那么jQuery的when()函数可以帮助你:http://api.jquery.com/jQuery.when/
来自jQuery示例:
$.when( $.ajax( "/validation1.php" ), $.ajax( "/validation2.php" ) ).then(function( a1, a2 ) {
// a1 and a2 are arguments resolved for the validation1 and validation2 ajax requests, respectively.
// Each argument is an array with the following structure: [ data, statusText, jqXHR ]
gotoNextStep();
});
then()函数只在所有ajax请求成功完成时执行。
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- HTML提交表单,同时包含空字段检查和按钮隐藏
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- 为什么我用于检查所需输入字段的jQuery脚本如此缓慢
- 表单级别的Anguarjs指令,访问所有字段并检查验证
- 正在检查HTML表单上的空字段
- j查询检查复选框是否被选中,然后向输入字段添加值
- 在提交时检查正则表达式验证,如果为空,则聚焦所有输入字段
- 要检查的正则表达式数值字段没有 /或具有所有相同的数字
- 隐藏隐藏的输入字段;检查元件”;
- JQuery:如何检查复选框是否被选中并向字段添加属性
- 我的单选按钮没有从foreach循环中获得值,表单验证返回'必填字段'即使已检查
- 检查以上表格字段是否正确填写
- 如何使用javascript检查id字段为空的单选按钮
- 隐藏字段并将其从检查函数中删除
- Ember-自定义计算属性,用于检查是否存在所有依赖字段
- jQuery-用于检查是否有任何字段不为空,然后将所有字段设为必需字段的代码
- jQuery:检索日期选择器日期,检查是否在日期范围内,显示/隐藏字段
- 下一步对Ajax验证内容的字段进行有效性检查
- 为什么当JS函数在点击提交按钮时返回false时,HTML表单空字段自动检查被禁用?