表单拒绝通过jQuery提交

时间:2010-02-24 21:40:07

标签: jquery forms form-submit

我有以下表格

<form name="myForm" id="myForm" method="post" enctype="multipart/form-data" action="script.php">

和这个jQuery

$(document).ready(function() {

  $('#previewButton').click(function() {
    // Change form's target to be in a new window.
    $('#myForm').attr('target', '_blank');

    /*
     * Create a hidden input field and add it to the form to designate that the
     * action the form is performing is a preview action.
     */
    $('#myForm').append($('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />'));

    // Submit the form.
    $('#myForm').submit();

    // Change the form's target to be the current page again.
    $('#myForm').attr('target', '');

    /*
     * Remove the hidden input field we just added so that the form can submit
     * normally.
     */
    $('#previewAction').remove();

    return false;
  });

});

我在两个不同的页面上有完全相同的两个代码。在其中一个,当我单击我的预览链接时,表单提交到一个新的空白窗口。在另一页上,表单未提交,单击“预览”时不会打开任何窗口。

.click()IS正在运行,我知道这是因为我在.click()中调用了alert(),并且出现了警告框。

从运行以下内容,我可以看到我的表单的.submit()在其他任何地方都没有被覆盖:

var submitEvents = $('#myForm').data("events").submit;
jQuery.each(submitEvents, function(key, value) {
  alert(value);
});

此外,我没有Javascript错误。

为什么单击预览(显然)没有做任何事情的想法?

3 个答案:

答案 0 :(得分:6)

原来有一个<input>按钮,其中id ='submit'。 jQuery不喜欢这个。

答案 1 :(得分:0)

可能是挑剔,但是:

$('#myForm').append($('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />'));

为什么你在同一条线上逃离"并且逃脱"?你有没有重写"'而忘记逃避?

另外,target form对我来说是新鲜事:)

修改

也许html或其他javascript可能会给你/我们一些线索 - 否则我会像你一样迷失。

答案 2 :(得分:0)

尝试使用不带$()的append方法,如下所示:

$('#myForm').append('<input id=\"previewAction\" name="previewAction" type=\"hidden\" />');

另一件事,你可以将Firebug插件添加到firefox,它是调试javascript的一个很棒的工具。 https://addons.mozilla.org/en-US/firefox/collection/firebug_addons