仅在禁用javascript时才启用提示提交事件/提交按钮

我在表单上有一些客户端JavaScriptvalidation。 它很棒。 但我希望能够容纳禁用JavaScript的用户。 我的validation不是从表单的onsubmit属性运行的,它是一个绑定到表单中普通按钮的事件处理程序。 因此,启动validation和提交的按钮实际上不是提交,它只是type =“button”:

 

然后我向其执行validation的click事件注册一个事件处理程序。 它提交,如果一切都通过:

 function clickHandler(event){ thisForm = event.data.caller var valid = submitValidation(thisForm); if (valid == true){ thisForm.submit(); } else{ } } 

我的问题是如果用户已禁用JS,则无法提交表单。 我可以使按钮type="submit" ,这将适用于已禁用JS的用户,但随后它将*始终提交表单并绕过启用JS的用户的validation。 (validation将运行但无论如何都会提交)。 如果我按下按钮type="submit" ,我可以阻止提交事件,如果它被点击? 我正在使用JQuery,JQuery可以抑制提交吗? 我希望我的validation能够处理它是否被提交。

您可以通过执行以下操作来抑制提交点击:

 $('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 }); 

您可以通过在form元素中设置onsubmit处理程序来禁止提交,然后如果validation失败则返回false。

因此,如果validation成功则返回true,如果失败则返回false,而不是调用thisForm.submit()

将按钮更改为正常的提交按钮,并将validation检查绑定到窗体上的submit()事件。

 $("form").submit(function() { if (!submitValidation()) { return false; } }); 

来自文档:

当用户尝试提交表单时, submit事件将发送到元素。 它只能附加到元素上。 可以通过单击显式 ,或者在某个表单元素具有焦点时按Enter键来表单。