我在表单上有一些客户端JavaScript验证。它工作得很好。但是我想适应那些禁用了JavaScript的用户。我的验证不是从表单的onsubmit属性运行的,它是一个绑定到表单中普通按钮的事件处理程序。因此,启动验证和提交的按钮实际上并不是一个提交按钮,它只是一个按钮“type=”:
<input type="button" value="Ok" class="okbtn">然后,我将一个事件处理程序注册到它的click事件,它执行我的验证。如果一切都通过了,它就会提交:
function clickHandler(event){
thisForm = event.data.caller
var valid = submitValidation(thisForm);
if (valid == true){
thisForm.submit();
} else{
}
}我的问题是,如果用户禁用了JS,就没有办法提交表单。我可以将按钮设为type="submit",该按钮适用于禁用JS的用户,但是它将始终提交表单并跳过对启用JS的用户的验证。(验证将运行,但无论如何都会提交)。如果我将按钮设置为type="submit",那么如果单击它,我可以阻止提交事件吗?我正在使用JQuery,JQuery可以抑制提交吗?我想让我的验证来处理它是否被提交。
发布于 2010-01-24 09:11:39
您可以通过执行以下操作来禁止提交点击:
$('input[type=submit]').bind('click', function(e) {
e.preventDefault() // prevents the form from being submitted
clickHandler(); // the custom submit action
});或者,您可以像这样取消实际的表单提交:
$('form').bind('submit', function(e) {
e.preventDefault();
// etc
});发布于 2010-01-24 09:11:20
您可以通过在form元素中设置onsubmit处理程序来禁止提交,如果验证失败,则返回false。
因此,如果验证成功,则返回true;如果验证失败,则返回false,而不是调用thisForm.submit()。
发布于 2010-01-24 09:12:54
将该按钮更改为普通的submit按钮,并将验证检查绑定到表单上的submit()事件。
$("form").submit(function() {
if (!submitValidation()) {
return false;
}
});从文档中:
当用户尝试提交表单时,
submit事件被发送到元素。它只能附加到元素。可以通过单击显式<input type="submit">、<input type="image">或<button type="submit">提交表单,也可以在某些表单元素具有焦点时按Enter键提交表单。
https://stackoverflow.com/questions/2125470
复制相似问题