提交表单时出现TypeError

时间:2014-05-03 07:25:07

标签: javascript jquery

我收到错误:

 TypeError: val.replace is not a function 

显示主 jquery.js 文件,似乎无法追踪问题。我已经将我的代码剥离到了基本要素,试图找出问题,但无济于事。我所做的只是代码中的alert(data),但这并不会触发。相反,表单似乎重新提交,并在我的firebug的帖子选项卡中,有2个提交事件。如果有人能提出解决问题的方法,我将不胜感激。

我想补充一点,验证工作正常,但是当谈到提交处理程序时,这就是问题所在。

非常感谢

JS

$(function() {

    $.validator.setDefaults({
        errorClass: 'form_error',
        errorElement: 'span',
        ignore: ":hidden:not(select)",
        errorPlacement: function(error, element) {
            error.appendTo(element.siblings('span'));
        }
    });

    $("#USRboxrtv").validate({
        rules: {
            requested: {
                required: true
            },
            service: {
                required: true
            },
            rtvdept: {
                required: true
            },
            address2: {
                required: true
            },
            box_rtv: {
                required: true
            }

        },
        messages: {
            requested: {
                required: '* required: You must enter your name'
            },
            rtvdept: {
                required: "* required: You must select a department"
            },
            address2: {
                required: "* required: You must select a customer address"
            },
            service: {
                required: "* required: You must select a service level"
            },
            box_rtv: {
                required: "* required: You must enter a box for retrieval"
            }
        },

        submitHandler: function() {

            if ($("#USRboxrtv").valid() === true) {
                var data = $("#USRboxrtv").serialize();
                alert(data);

            }
        }

    });
});

html输入

   <p>

    <input name="submit" class="usersubmit" type="submit" value="Submit" />
    <input name="formreset" class="usercancel" type="reset" />

   </p>

1 个答案:

答案 0 :(得分:1)

好的,因此错误消息是由此行var data = $("#USRboxrtv").serialize();引起的。我无法告诉你它是什么原因,但如果你search this error on google,你会发现错误在序列化函数中。确保序列化工作满足必要条件。您尚未提供$("#USRboxrtv")的HTML,因此我不确定此情况下的错误在哪里。顺便问一下,您使用的是最新版本的jquery吗?

val将返回一个字符串或未定义。我认为在你的情况下,val是未定义的,那是因为你收到了这个错误。

正如你在其中一篇文章中评论的那样:

$(".chosen-select").val('').trigger("chosen:updated");

在此代码中,您实际上是为$(".chosen-select")分配了一个空值,导致此错误。