使用submit()事件的错误

时间:2011-12-02 13:27:07

标签: jquery

我有这个简单的jQuery代码:

<script type="text/javascript">
    <!--
    jQuery(function(){
        jQuery('#old_thumb').click(function(){
            $(this).val($(this).attr('title'));
            $('#sf').val('2');
            $('#add_new_event').submit();
        });
    });
    //-->
</script>

由于某种原因,submit()无法正常工作(点击old_thumb按钮后我的表单无法提交。有人可以帮助我吗?

这里是html的一部分(它很长并且包含了php所以我只会写开始和我更新的那些字段)..

<form action="http://dominicbesner.com/wp-admin/admin.php?page=ManageMedia/MM-admin.php&action=Edit2" method="post"  name="add_new_event" id="add_new_event" enctype="multipart/form-data">
    <input type="hidden" name="sf" id="sf" value="1" />
    <input type="button" name="old_thumb" id="old_thumb" value="Edit" title="<?php echo $file;?>'" />

    <input type="submit" name="submit" id="submit" value="Save Medias" class="button-primary" />
    <input type="reset" name="reset" value="Reset Form" class="button" /></td>
</form>

5 个答案:

答案 0 :(得分:2)

您似乎在混合使用jQuery实例引用 - 您正在使用jQuery$。假设你设置noConflict试试这个:

jQuery(function(){
    jQuery('#old_thumb').click(function(){
        jQuery(this).val(jQuery(this).attr('title'));
        jQuery('#sf').val('2');
        jQuery('#add_new_event').submit();
    });
});

答案 1 :(得分:1)

似乎正在使用早期版本的jQuery(&lt; 1.7)。

"Uncaught TypeError: Property 'submit' of object #<HTMLFormElement> is not a function"

请参阅release notes for 1.7.1

1084410701包含提交表单的问题。

此外,在使用早期版本的jQuery时,您的目标页面会发送导致此错误的标头X-Frame-Options SAMEORIGIN拒绝显示文档,因为X-Frame-Options禁止显示。“(至少在使用iFrames的jsFiddle上。)

答案 2 :(得分:0)

1)你为什么要注意你的代码?

2)你使用的是什么版本的jQuery?

3)删除jQuery('#old_thumb')。click(function(){         $(本).VAL($(本).attr( '标题'));         $( '#SF')VAL( '2')。         $( '#add_new_event')提交()。         });

out of document ready func

4)什么是$('#add_new_event')?什么样的元素?

答案 3 :(得分:0)

我有同样的问题但是我在提交表单之前使用了一个按钮元素(id为“submit”)来弹出一个jQuery对话框。点击其中一个对话框按钮后,我尝试提交表单 -

$("#myform").submit();

然而它总是给出错误 -

  

未捕获的TypeError:对象#的属性'submit'不是函数

当我将按钮的ID更改为其他内容时,表单提交正常。

不是我知道的最好的解决方案,但我认为它可能会有所帮助。

答案 4 :(得分:0)

可能已经回答了但是触发错误的问题是你在表单元素上调用“submit()”事件。

而不是这样做:

$("#myform").submit();

调用将处理您的提交的函数。这是我提交表单的代码。根据自己的喜好随意复制/修改/使用:

$('#submit').bind('click', function(e) {
    e.preventDefault();

    // Check for a Name
    if($('#name').val() !== '') {
        $('#name').removeClass('error').addClass('valid');
    } else {
        $('#name').removeClass('valid').addClass('error');
    }

    // Check for a Valid Email
    if(isEmail($('#email').val())) {
        $('#email').removeClass('error').addClass('valid');
    } else {
        $('#email').removeClass('valid').addClass('error');
    }

    // Check for a Valid Phone number
    if(isPhoneNumber($('#phone').val())) {
    $('#phone').removeClass('error').addClass('valid');
    } else {
    $('#phone').removeClass('valid').addClass('error');
    }

    // Check for a Message
    if($('#message').val() !== ''){
        $('#message').removeClass('error').addClass('valid');
    } else {
    $('#message').removeClass('valid').addClass('error');
    }

    // Check to see if Any input/textarea has the class 'error'
    if($('input').hasClass('error') || $('textarea').hasClass('error')){
        // Invalid form entry
    } else {
        // Submit the form
        submitForm();
    }
});

我有两个功能来检查有效的电子邮件和有效的电话号码

function isEmail(email) {
    var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}

function isPhoneNumber(number) {
    var regex = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
    return regex.test(number);
}

然后我有处理表单提交的功能

function submitForm() {
    toggleModal(false);
    // Format the data
    var data = 'name=' + $('#name').val() + '&email=' + $('#email').val() + '&phone=' + $('#phone').val() + '&message=' + encodeURIComponent($('#message').val());
    // start the ajax
    $.ajax({
        // this is the php file that processes the data and send mail
        url: "process.php",
        // GET method is used
        type: "GET",
        // pass the data
        data: data,
        // Do not cache the page
        cache: false,
        // Success response
        success: function (html) {
            $('#contact-form').fadeOut('slow', function(e) {
                toggleModal(false);
                if (html==1) {
                    // if process.php returned 1/true (show success message)
                    // show the success message
                    $('#success').fadeIn('slow');
                } else {
                    // if process.php returned 0/false (show failed message)
                    //Show Fail Message
                    $('#fail').fadeIn('slow');
                }
            });
        }       
    });
}