Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
有没有办法阻止使用此javascript/jquery提交表单?_Javascript_Jquery_Return_Preventdefault - Fatal编程技术网

有没有办法阻止使用此javascript/jquery提交表单?

有没有办法阻止使用此javascript/jquery提交表单?,javascript,jquery,return,preventdefault,Javascript,Jquery,Return,Preventdefault,我在网上搜索过,我尝试过在各地执行“preventdefaults”和“ReturnFalse”语句,但我似乎找不到一种方法来阻止表单提交和重新加载页面。它仅在表单经过验证后重新加载。我是一个初学者,但我真的很努力地实现脚本来验证一个表单(它有“post”-方法和“#”作为动作),并进行ajax调用。这是一项学校作业,对于你们能给出的任何建议都是优雅的 $(document).ready(function() { $("#submit").click(function()

我在网上搜索过,我尝试过在各地执行“preventdefaults”和“ReturnFalse”语句,但我似乎找不到一种方法来阻止表单提交和重新加载页面。它仅在表单经过验证后重新加载。我是一个初学者,但我真的很努力地实现脚本来验证一个表单(它有“post”-方法和“#”作为动作),并进行ajax调用。这是一项学校作业,对于你们能给出的任何建议都是优雅的

$(document).ready(function()
{
    $("#submit").click(function()
        {
            var gbname = $("#gbname")[0];
            var gbmessage = $("#gbmessage")[0];

            formFields = [gbname, gbmessage]
            var warning = false;

            for (i=0; i<formFields.length; i++)
            {
                formFields[i].style.backgroundColor = "white";
                if (formFields[i].value == "")
                {
                    formFields[i].style.backgroundColor = "red"
                    $(formFields[i]).bind("keyup", resetBgColor);
                    $(formFields[i]).bind("change", resetBgColor);
                    warning = true;
                }       
            }

            if (warning == true)
            {
                alert("Vänligen fyll i fälten korrekt!");
                return false;
            }

            else
            {
                $.post('ajax.php', {gbname: gbname, gbmessage: gbmessage},

                function(data)
                {
                    $("#successmessage").html(data);
                    $("#successmessage").hide();
                    $("#successmessage").fadeIn(1500); //Fade in error/success-meddelande

                    var comment = $("<div class='film2'><p class='names'><b>Namn:</b>" +gbname+ "</p> <p class='messages'><b>Meddelande:</b>" +gbmessage+ "</p></div>");

                    $("#kommentarer").prepend(comment);
                    clearForm();


                });

                return false;
            }

            return false;

        });

});
$(文档).ready(函数()
{
$(“#提交”)。单击(函数()
{
变量gbname=$(“#gbname”)[0];
变量gbmessage=$(“#gbmessage”)[0];
formFields=[gbname,gbmessage]
var警告=错误;

对于(i=0;i来说,您对作为对象的输入元素的引用以及从AJAX调用返回的数据有点混乱

还纳入了对表单提交事件具有约束力的建议

$(文档).ready(函数(){
函数clearForm(){
$('input.reset')。每个(函数(){
$(this.val(“”);
});
}
$(“表单”)。在('submit',函数(){
警报(‘已提交’);
变量gbname=$(“#gbname”);
变量gbmessage=$(“#gbmessage”);
formFields=[gbname[0],gbmessage[0]]
var警告=错误;
对于(i=0;iNamn:“+data.gbname+”

Meddelande:“+data.gbmessage+”

”; $(“#kommentarer”)。预编(评论); clearForm(); }//最终成功 });//结束ajax 返回false; }//结束其他 返回false; }); });
我建议使用

$("form").on('submit', function (e) {
[...]
if(validationErrors) {
    alert(Errormessage);
    e.preventDefault();
}
[...]
而不是返回false。


为了让它工作,您必须使用事件作为回调函数的参数。

确保您的按钮是常规按钮而不是提交按钮:)而不是
单击
尝试使用
$('form')。提交(函数(){return false;})
每次单击该按钮时,您都在用事件绑定表单元素。这是一个坏主意。如果您检查js控制台,在重新加载页面之前是否注意到任何错误?如果我不得不冒险,我会怀疑您的代码中有错误,并且不会出现错误返回,因为代码无法完成执行-然后表单继续其默认行为,即post。答案是您的一个标记。Aka preventDefault。返回false可能由于JS错误而失败。设置您的控制台以保留页面导航上的控制台。这与上面的post相结合,我想这是个诀窍…谢谢
$("form").on('submit', function (e) {
[...]
if(validationErrors) {
    alert(Errormessage);
    e.preventDefault();
}
[...]