试图在没有<form>标记的情况下对表单进行验证。
它是一个使用ajax的cms插件的结构,它不知道为什么输入没有用<form></form>包装。
Html:
<div class="feedback">
<input id="name" type="text" name="ajax-name" value="Your name" />
<input id="mail" type="text" name="ajax-mail" value="Your e-mail" />
<button type="submit" id="done">Send</button>
</div>联署材料:
$(".feedback #done").click(function() {
var flag = true;
if (!$("#name").val()){
$("#name").addClass('error');
flag = false;
}
if (flag == true)
$(".feedback").submit();
});这个代码不起作用。
如何在没有<form> 标记的情况下对表单进行验证?
Ajax不知道这种验证。
谢谢。
发布于 2010-11-06 18:29:12
而不是
if (flag == true)
$(".feedback").submit(); 做
return flag;如果没有<form>,就不能提交,但是可以防止甚至允许click()完成。以下是完整的代码:
$(".feedback #done").click(function() {
var flag = true;
if (!$("#name").val()){
$("#name").addClass('error');
flag = false;
}
//return the value of flag instead of working with submit()
return flag;
});如果单击事件返回false,则应阻止单击进一步进行。您的标志变量将为true或false,这取决于验证的工作方式,因此这将决定流程是否向前移动。
发布于 2010-11-06 18:52:02
完成工作的另一种方法是将.feedback的所有子节点封装为一个<form >标记,然后在<form id="someid">上执行.submit()。
$(function () {
$('.feedback').children().wrapAll('<form id="form" />');
$('.feedback #done').click(function () {
var flag = true;
if (!$("#name").val()) {
$("#name").addClass('error');
flag = false;
}
if (flag) {
$("#form").submit();
return false;
}
});
});发布于 2012-07-20 18:47:49
@编辑,所以我实际上读了这个问题,尽管它很古老,但它似乎仍然相关.
如果使用.change()或.bind()或.on(),则只需使用jQuery 1.7扩展提交按钮即可。e.preventDefault()可以使用ajax处理程序吗?链子的刺眼解锁功能,如下所示:
var some_flag_bool = false;
$('#done').click( function (e) {
e.preventDefault();
some_flag_bool = true;
$(this).unbind('#done').submit();
//return might be considered optional
return this.some_flag_bool;
});或者类似于jQuery 1.7中的东西,试图尽早捕捉到:
function validation() { if (!foo) { throw new Error("oh noz!"); }
$('body').on('change', 'input', function() { validation(); });当文档准备就绪时,$.attr(“禁用”、“禁用”)按钮以及验证方法中的$.removeAttr(“禁用”)是否可以
但是,如果是我,我只会从我的ajax处理程序调用验证方法,或者使用jQuery.validation插件。
https://stackoverflow.com/questions/4114460
复制相似问题