单击HTML表单提交按钮可调用函数。在提交表单之前,函数是否始终完成?

时间:2014-02-08 10:18:37

标签: javascript html forms

我有一个HTML表单。其中一个表单字段值由JavaScript函数设置。单击提交按钮时会调用JavaScript函数。我可以确定函数总是及时完成并在提交表单之前设置字段值吗?

编辑:这是代码,按要求。

        $('#submitbutton').click(function () {
            createWholeArray();
        });

        function createWholeArray() {

            var templateString = width + " " + height + "\n";

            for (var x = 0; x < width; x++) {
                for (var y = 0; y < height; y++) {
                    if ($('#' + x + '-' + y).hasClass('selected')) {
                        templateString = templateString.concat("\n" + x + " " + y);
                    }
                }
            }

            document.getElementById('templatestring').value = templateString;
        }

2 个答案:

答案 0 :(得分:3)

是的,可以,submit事件在实际提交(导致重新加载页面)之前被触发。您甚至可以阻止使用脚本发送表单。请注意,如果您希望在浏览器默认表单发送完成之前完成操作,则只能确定。

事实上,只有在该函数中仅使用同步操作时才会出现这种情况。如果使用异步函数,则必须阻止现在提交表单并从该函数的回调中提交表单。

请注意在表单上使用submit事件而不是按钮上的click事件(如果适用)。它确保通过点击输入或其他可能性发送表单来发送表单时调用您的函数。

正如MarkP在评论中指出的那样,请记住,用户可以禁用javascript,这可能会导致意外结果。

答案 1 :(得分:1)

做一件事。 将提交按钮更改为普通按钮并将click事件发送给他。

通过点击普通按钮手动提交您的页面。 我已经在我的项目中完成了相同的代码。

$("#SignUpButton").click(function()
        {
                $('#loginForm').attr('method','post');
                $('#loginForm').attr('action','SignupServlet');
                $('#loginForm').submit();
        });