这是我的表格:
<div id="MyModal" class="m-modal-container">
<div class="form-wrap">
<form id="form_reg" class="m-form reg-form" action="www.somedomain.com/subPage">
<div class="form-element email">
<input type="email" class="text" name="email" id="email" value="" placeholder="Email Address" title="Email is required." maxlength="90" required>
</div>
<div class="form-element buttons">
<button type="submit" class="button primary submit">Register</button>
</div>
</form>
</div>
</div>
这是来自我的 JS 文件来处理提交
$("#MyModal #form_reg").submit(function(event){
var initial_id = 0;
$.ajax({
url: '/dir/file.cfc',
async: false,
data: {
method: 'myFunction',
emailAddress: $("#MyModal #form_reg").find('[name="email"]').val(),
email_id: 0
},
cache: false,
type: 'get',
dataType: 'json'
})
.success(function(response) { initial_id = response.jsid; })
.error(function(jqXHR, textStatus, errorThrown) { })
.complete(function(response) {
if (initial_id == 0) {
return true;
} else {
event.preventDefault();
$('#MyModal').dialog('close');
return false;
}
});
});
我的问题:
此表单在主页上显示为模式。用户填写完毕,点击提交,进入新页面。它使用 HTML5 表单验证来指示必填字段。它使用 webShims/polyfill 来实现旧版浏览器的兼容性。
一切正常。我的问题出现在某些情况下,我不希望表单提交到“subPage”(表单上的默认操作)。相反,我希望它简单地关闭模态表单,停留在显示模态的页面上。(这发生在电子邮件已经在系统中的情况下 - 不想将用户带到显示电子邮件已经在系统中的消息的辅助表单页面)。
如果我使用 $("#MyModal #form_reg").click(function(event){ blah blah blah }); - 然后我可以控制提交与不提交。但是,我随后失去了 HTML5 表单验证功能。如果我使用 $("#MyModal #form_reg").submit(function(event){ blah blah blah }); 表单验证有效,但页面提交并且代码未捕获事件。
迄今为止我所做的所有研究都表明 IE7 不能很好地处理 .submit 事件,但是,我需要 .submit 事件才能使表单验证正常工作。
有没有办法让这三件事一起工作?IE7 是导致我的问题的唯一浏览器。.submit/form 验证在 FF、IE9、Opera 和 Chrome 中按预期工作。
任何建议将不胜感激。谢谢你。