【发布时间】:2010-08-25 03:49:35
【问题描述】:
我有一个带有以下 HTML 的表单:
<form id="course_edit_form" name="course_form" action="/courses/save" method="post">
<fieldset>
<div id="side-left">
<!-- Course Name -->
<input type="hidden" id="course_id" name="course_id" value="${c.the_course.id}" />
<div>
<label for="name" id="name_label">Course name<em>*</em></label>
${h.tags.text("name", c.the_course.name, size=40)}
</div>
<!-- Event Type -->
<div>
<label for="type_list" id="class_type_label">Event type</label>
<p>Use Ctrl to do multi-select</p>
<select multiple="multiple" id="type_list" class="type-box required" name="type_list">
% for ty in c.all_types:
% if int(ty.id) in c.typeids:
<option selected="selected" value="${int(ty.id)}">${str(ty.name)}</option>
% else:
<option value="${int(ty.id)}">${str(ty.name)}</option>
% endif
% endfor
<option value="all">All</option>
</select>
</div>
<div>....more input fields here</div>
</div>
<!-- Controls -->
<div class="controls">
<input id="delete" name="delete" type="button" value="Delete" />
<input id="submit" name="submit" type="submit" value="Update" />
</div>
</fieldset>
</form>
我在我的提交按钮上附加了一个点击处理程序,以便我的 javascript 在提交实际表单之前首先验证我的表单。如果验证期间一切顺利,我会将标志“course_form_valid”设置为 true。在我的 javascript 的最后几行中,我有:
if (course_form_valid) {
jQuery('#course_edit_form').submit();
}
但是,即使 course_form_valid 为真,上述行也不会提交表单。我什至尝试删除表单的操作和方法属性,并改用下面的 javascript,但这仍然行不通:
if (course_form_valid) {
jQuery('#course_edit_form').submit(function() {
jQuery.ajax({
url: '/courses/save',
type: 'GET',
data: jQuery('#course_edit_form').serialize(),
async: false
});
});
}
发生了什么事?有人可以帮帮我吗?
-马克
【问题讨论】:
-
能否请您添加一个 jsbin 工作示例? www.jsbin.com
-
对不起,我忘了提到我的点击处理函数的第一行有 e.preventDefault();这会引起一些麻烦吗?
-
我似乎找不到问题,请提供任何其他 js 代码...
course_form_valid如何设置为true?你试过没有if的jQuery('#course_edit_form').submit();吗? -
嗯....最初我将其设置为 true。然后,如果在验证期间,某些字段是错误的,我会将该标志设置为 false。这是否消除了您的困惑?