【发布时间】:2023-03-02 23:46:01
【问题描述】:
JavaScript 位:
$(document).ready(function()
{
$('#form').submit(function(e)
{
e.preventDefault();
var $form = $(this);
// check if the input is valid
if(! $form.valid()) return false;
$.ajax(
{
type:'POST',
url:'add.php',
data:$('#form').serialize(),
success:function(response)
{
$("#answers").html(response);
}
});
})
});
HTML 位:
<input type="text" name="answer[1]" class="required" />
<input type="text" name="answer[2]" class="required" />
所以这是我尝试使用的代码。这个想法是在我使用 Ajax 发送表单之前验证我的所有输入。我现在已经尝试了很多版本,但每次我最终都会提交,即使表格没有完全填写。我所有的输入都是“必需的”类。谁能看到我做错了什么?
另外,我依赖于基于类的要求,因为我的输入名称是用 php 生成的,所以我永远无法确定我得到什么名称 [id] 或输入类型。
当我在“页面”中浏览问题时,我会显示/隐藏问题。
<input type="button" id="next" onClick="toggleVisibility('form3')" class="next-btn"/>
JS:
function toggleVisibility(newSection)
{
$(".section").not("#" + newSection).hide();
$("#" + newSection).show();
}
【问题讨论】:
-
提交后会发生什么?
-
目前我只是回显所有 $key => $value 对,即使我只填写了 1/4 个问题,它们也会不断在我的屏幕上弹出。
-
我在最新版本的 jquery (v1.7.2) 中找不到
beforeSubmit作为 $.ajax 的有效选项。您可能想要使用最新版本的 jquery。也就是说,达林的回答是应该怎么做。也就是说,如果您不能按照他的建议进行操作,请将 beforeSubmit 的最后一行替换为 Fliespl 提供的代码。您需要检查.validate()的返回值,然后继续或取消ajax 请求。 -
尝试 fliespl 行,但它仍然只是提交。更新了相关代码。
标签: jquery ajax jquery-validate validation