【发布时间】:2012-08-14 14:41:45
【问题描述】:
我正在使用 jquery+Ajax 验证重复名称。一切正常,只是一旦一切都返回 true,表单就没有提交
发生了什么
- 如果未输入名称,则会显示警告框,说明名称为 必填 --> 没问题
- 如果发现重复名称,则会显示警告框,说明名称 已经存在并且表单没有提交 --> 没问题
- 如果未找到重复名称,则会显示警告框(以证明
else部分条件有效),但 表单无效 提交。我希望表单继续并在此else中提交 部分
jQuery 代码
$('#form1').submit(function(){
var name = $('#shelf_name').val();
if(name == '')
{
alert('Shelf name is required');
$('#shelf_name').focus();
}
else
{
$.ajax({
type:'post',
url:'check-duplicate-shelf-name.php',
data:{'name':name},
context:this,
success:function(data)
{
if(data == 'stop')
{
alert('Shelf name already exists'); // working if duplicate name is found
}
else
{
alert('else working?'); // alert box is showing up if name is not duplicate
this.submit(); // but after alert, this line not executing
}
}
});
}
return false;
});
HTML 表单标签
<form action="add-shelf-post.php" method="post" id="form1">
check-duplicate-shelf-name.php页面
<?php
include 'confignew.php';
$name = $_POST['name'];
// peforming database operations
.
.
.
// and then
if($db->num_rows($q) == 0)
{
echo 'go';
}
else
{
echo 'stop';
}
我遗漏了一些非常明显的东西。希望这里有人能指出这一点。
在 Firefox 中使用 Firebug 检查后,我确实遇到了错误。当我使用 Chrome 进行测试时,它没有出现。这是屏幕截图。
【问题讨论】:
-
您确定“this”指向您认为应该指向的位置吗?
-
@JureC。它应该指向表单,不是吗?
-
@asprin 不要忘记 ajax 是异步的,并且您正在处理提交事件,因此即使正确提交,您也会再次输入提交事件。
-
@asprin 我不认为这是正确的。只需检查:)
-
@JureC。正如我所说,我无法弄清楚出了什么问题。如果你发现了,你会愿意分享吗?
标签: javascript jquery ajax forms