表单提交前如何触发onBlur

Zee*_*han 5 html javascript forms jquery jsp

我有一个input框,其中有onBlur用于验证的功能。

我面临的问题是,当我直接单击“提交”按钮而不从input框中跳出时,在onBlur函数调用之前就已经提交了表单,并且验证没有发生。

有人可以在这里建议解决方法。我在JSP页面中使用javascript和JQuery。

Gon*_*ing 3

可能有更简单的选项,但您可以停止提交按钮,然后在下一帧上提交表单(使用 setTimeout):

例如类似的东西

$('input[type=submit]').click(function(e){
    var $form = $(this).closest('form');
    e.preventDefault():
    setTimeout(function(){ 
       $form.submit();
    }, 0);
});
Run Code Online (Sandbox Code Playgroud)

接下来的问题是,Enter如果您在按下 时要在要验证的字段上进行操作,那么如何允许关键表单提交工作Enter。您可能还应该验证整个表单submit

我想出了以下方法,使用提交事件来代替(因此Enter被处理)并在 上切换一个类form(以避免递归),这应该可以完成您想要的操作:

$('form').submit(function (e) {
    var $form = $(this);
    $form.toggleClass('ignore');
    if ($form.hasClass('ignore')) {
        e.preventDefault();
        $form.find('input[type=text]').blur();
        setTimeout(function () {
            $form.submit();
        }, 0);
    }
});
Run Code Online (Sandbox Code Playgroud)

JSFiddle: http://jsfiddle.net/TrueBlueAussie/7uLfra3b/2/

您可以通过仅模糊提交处理程序中当前聚焦的输入来提高新版本的效率,但它现在允许Enter.