Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery事件链接和表单未提交_Jquery_Html_Forms - Fatal编程技术网

jQuery事件链接和表单未提交

jQuery事件链接和表单未提交,jquery,html,forms,Jquery,Html,Forms,我编写了一个PHP库,它生成服务器端验证代码和客户端(jQuery)验证代码。这是我的代码: 在我的示例中,关于输入模糊,我们检查输入是否为空,如果为空,则显示错误消息。我还在表单提交上运行这个验证函数,如果它返回false(无效输入),表单就不会提交 问题是:按下发送按钮,将显示错误消息。然后,在文本区域中键入消息,然后立即再次单击提交按钮。错误消息消失,但在再次按“发送”之前不会提交表单。为什么我需要再按一次?我的验证函数在某些方面是否不正确?我链接事件的方式是否不正确 作为参考,我使用的是

我编写了一个PHP库,它生成服务器端验证代码和客户端(jQuery)验证代码。这是我的代码:

在我的示例中,关于输入模糊,我们检查输入是否为空,如果为空,则显示错误消息。我还在表单提交上运行这个验证函数,如果它返回false(无效输入),表单就不会提交

问题是:按下发送按钮,将显示错误消息。然后,在文本区域中键入消息,然后立即再次单击提交按钮。错误消息消失,但在再次按“发送”之前不会提交表单。为什么我需要再按一次?我的验证函数在某些方面是否不正确?我链接事件的方式是否不正确

作为参考,我使用的是Chrome31.0


谢谢

@adeneo做对了。如果不输入任何内容,请按“发送”,然后输入一些内容,然后在“发送”上单击鼠标向下(而不是鼠标向上),就会在输入上触发blur(),从而删除错误消息并使“发送”按钮向上移动。当它这样做时,您的鼠标不再位于按钮上方,因此您不会在按钮上滑动鼠标。要提交表单,必须在鼠标悬停在“发送”按钮上时,将鼠标向下移动并按住鼠标。

@adeneo操作正确。如果不输入任何内容,请按“发送”,然后输入一些内容,然后在“发送”上单击鼠标向下(而不是鼠标向上),就会在输入上触发blur(),从而删除错误消息并使“发送”按钮向上移动。当它这样做时,您的鼠标不再位于按钮上方,因此您不会在按钮上滑动鼠标。对于要提交的表单,您必须在鼠标位于“发送”按钮上时鼠标向下和鼠标向上移动。

它会在模糊时触发,因此在点击提交按钮之前,您必须从键入的任何输入中移除焦点。哦,而且按钮会在模糊时移动,因此很难在小提琴中点击
if(function(){return$.trim($(“#contactMessageInput”).val()).length>0;}())
看起来很奇怪触发模糊没关系,但为什么当我单击提交时,模糊事件会阻止表单的提交?在我的脑海中,单击提交似乎会同时触发这两种情况。它会触发模糊,所以在点击提交按钮之前,你必须从键入的任何输入中移除焦点。哦,按钮移动到blur,因此如果(函数(){return$.trim($(“#contactMessageInput”).val()).length>0;}(),则很难在小提琴中敲击
if(函数(){return$.trim($(“#contactMessageInput”).val()).length>0;}())
看起来很奇怪触发模糊没关系,但为什么当我单击提交时,模糊事件会阻止表单的提交?在我的脑海中,单击提交似乎应该触发两者。是的,这是正确的,这把小提琴
http://jsfiddle.net/Q3P7D/
可能有助于调试此行为。是,这是正确的,此fiddle
http://jsfiddle.net/Q3P7D/
可能有助于调试此行为。
$(document).ready(function () {
var contactMessageInputValidationFunction = function () {
    if ($.trim($("#contactMessageInput").val()).length > 0) {
        $("#contactMessageInputErrorMessage").hide();
        return true;
    } else {
        $("#contactMessageInputErrorMessage").show();
        return false;
    }
};

$("#contactMessageInput").blur(contactMessageInputValidationFunction).parents("form").submit(contactMessageInputValidationFunction);
});