当前位置: 首页 > 知识库问答 >
问题:

JQuery必填字段未停止Ajax表单提交

辛盛
2023-03-14

我使用以下代码使用Ajax提交表单:

$(document).ready(function(){
            $("#SubmitTicket").submit(function(e){
                CheckRequired();
                e.preventDefault();
                dataString=$("#SubmitTicket").serialize();
                $.ajax({
                    type: "POST",
                    url: "?SubmitTicket=1",
                    cache: false,
                    data: dataString,
                    success: function(res) {
                        if(res.indexOf("success")!=-1) {
                            //window.location.href = res.substr(8);
                            $("#CreateNewTicket_Body").html(res);
                            $("#CreateTicket").hide();
                        }
                    }
                });
            });
        });

此函数检查表单元素中所需的类

function CheckRequired(event) {
    var $form = $(this);

    var emptyElements = $form.find('.required').filter(function() {
        return this.value === ''
    });

    if(emptyElements.length > 0) {
        event.preventDefault();

        emptyElements.addClass("EmptySelect").attr('title', 'This field is required');

        //alert(emptyElements.attr("id"));
        alert("One or more fields cannot be blank");

        return false;
    }
}

然后,我有了这段代码,可以使用上述功能自动检查所有表单中的必填字段:

$(document).ready(function () {
    $('form').on('submit', CheckRequired);
});

它适用于发布到另一页的表单。

当使用Ajax提交代码时,当出现错误时,它会显示警报,但它仍会提交表单。

共有3个答案

巫马英豪
2023-03-14

如果“CheckRequired()”返回false,则需要通过返回false来停止脚本。

 $(document).ready(function(){
        $("#SubmitTicket").submit(function(e){
            e.preventDefault();
            if (!CheckRequired(e)) {
                   return false;
            }
            dataString=$("#SubmitTicket").serialize();
            $.ajax({
                type: "POST",
                url: "?SubmitTicket=1",
                cache: false,
                data: dataString,
                success: function(res) {
                    if(res.indexOf("success")!=-1) {
                        //window.location.href = res.substr(8);
                        $("#CreateNewTicket_Body").html(res);
                        $("#CreateTicket").hide();
                    }
                }
            });
        });
    });
巫马玉堂
2023-03-14

您只需在表单中添加onSubmit=“return CheckRequired()”。

邵奇
2023-03-14

您可能希望将Check必需的返回封装到if()结构中:

$(document).ready(function(){
            $("#SubmitTicket").submit(function(e){
                if(CheckRequired.call(this,e)) { // this should refer to the event target element, i.e. the form element, providing context for the function
                    e.preventDefault();
                    dataString=$("#SubmitTicket").serialize();
                    $.ajax({
                        type: "POST",
                        url: "?SubmitTicket=1",
                        cache: false,
                        data: dataString,
                        success: function(res) {
                            if(res.indexOf("success")!=-1) {
                                //window.location.href = res.substr(8);
                                $("#CreateNewTicket_Body").html(res);
                                $("#CreateTicket").hide();
                            }
                        }
                    }
                });
            });
        });
 类似资料:
  • 问题内容: 我正在编写一些javascript(lubricmonkey /用户脚本),它将一些输入字段插入网站上的表单中。 问题是,我不希望这些输入字段以任何方式影响表单,我不希望它们在提交表单时提交,我只希望我的JavaScript可以访问它们的值。 有什么办法可以将一些输入字段添加到表单的中间,而在提交表单时不提交它们呢? 显然,理想的情况是输入字段不在form元素中,但是我希望结果页面的布

  • 问题内容: 我想使用AJAX来确定表单的值对我来说是否可以接受(这不是表单验证)。AJAX 将确定是否提交表单。 下面,你会看到,当表单提交并根据返回什么我执行一个AJAX调用(无论是空白这是可以接受的,或者这是不能接受的错误信息),我想还是在。 我怀疑我的麻烦在于AJAX的。请帮助我摆脱AJAX呼叫,以便我可以执行类似的操作。 加工: 原版的: 问题答案: 由于ajax调用是异步的,因此必须阻止

  • 问题内容: 此代码正确吗?我正在尝试提交,如果文本区域再次为空,我也想提交。 我正在尝试上传: 谢谢… 问题答案: 用 代替 如果您使用的是最新版本的jquery。

  • 问题内容: 我有一个带有名称和未定义输入数量的表单。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送表单的所有输入。 我想一种方法是做类似的事情 但是我不完全知道所有的表格输入。是否有仅发送所有表单输入的功能部件或功能? 问题答案: 您可以使用Ajax表单插件中的ajaxForm / ajaxSubmit函数或jQuery序列化函数。 AjaxForm :

  • 问题内容: 我只能修改ajax调用中的代码。当我单击名为的表单中的提交时,就会发生ajax调用。 问题答案: 您需要在成功处理程序之前将其停止。因为该函数在您的AJAX调用之后完成执行,所以表单将在进行ajax调用时提交(并且在您的ajax调用结束时为时已晚)。 但是,可以,在函数末尾放置return false。 如果在成功处理程序中确实很重要,则可以同步执行调用。

  • 我正在使用jquery submit()函数提交表单,但它多次提交。我用尽了我所知道的一切,但无法阻止它。下面是我的功能: 下面是我的表格: 但有时如果用户多次点击按钮的速度太快,则点击多次工作。不是每次。有人知道吗?