2x提交按钮以执行不同的URL

时间:2011-10-31 11:50:13

标签: javascript jquery

需要帮助jquery根据SUBMIT按钮按下更改我的表单操作。 我找到了一些javascript代码,但它没有用。

<form name="myform" onsubmit="return onsubmitform();">

这是函数

    <script type="text/javascript">
    function submitform()
    {
         if(document.pressed == 'Save')
         {
              document.myform.action ="jbupdate.php";
         } else
         if(document.pressed == 'Print')
         {
              document.myform.action ="ppage.php";
         }
         return true;
     }
     </script>

这些是我的提交按钮

     <input type="submit" name="operation" onclick="document.pressed=this.value" value="Save" />
     <input type="submit" name="operation" onclick="document.pressed=this.value" value="Print" />

我想根据按下的按钮将此信息发布到这些操作页面。

6 个答案:

答案 0 :(得分:3)

如果您查看JavaScript控制台,当您尝试提交表单时会看到错误消息,该表单会告诉您错误的大部分内容:在表单的submit处理程序中,您正在尝试调用名为onsubmitform的函数:

<form name="myform" onsubmit="return onsubmitform();">
<!--                                 ^--- here     -->

...但您的功能实际上称为submitform

<script type="text/javascript">
function submitform()
//       ^--- here

如果你使这些名字匹配,它可能大部分都有用,虽然我不是完全确定期望提交按钮的click事件在表单{{1}之前触发处理程序是完全可靠的跨浏览器。

但是,FWIW,我可能会采用不同的方式。既然你说你正在使用jQuery,我会完全抛弃全局submit函数,添加一个隐藏字段,并使按钮只是按钮(而不是提交按钮),因为你的表单已经不起作用,除非JavaScript已启用。

所以:

submitform

使用:

<input type="hidden" name="operation" value="" />
<input type="button" value="Save" />
<input type="button" value="Print" />

答案 1 :(得分:2)

以下javascript函数获取目标页面的URL和名称/值对的关联数组,并通过动态创建表单然后提交表单将数据POST到提供的URL。

您可以使用两个输入按钮代替提交。单击按钮,您可以将操作部分更改为您想要的任何内容,然后提交。

 var myForm = document.getElementById(formid);
 myForm.action = to-wherever-u-want ;
 myForm.submit() ;

使用不同的动作编写两个函数,或者编写一个函数,确定按下了哪个btn。

您的脚本遇到了一些错误,例如您调用了onsubmitform(),但您只有defitition中的sumitform()。请你照顾好。

答案 2 :(得分:2)

这是另一种选择:

<form action="ThisActionIsReplacedInTheButtonOnclickEvent" method="POST" Name="MyForm" target="_blank" >
...
<input type="submit" name="MyBtn" value="do it" OnClick="document.forms['MyForm'].action = 'Destination1.aspx'" >
<input type="submit" name="MySecondBtn" value="do it different" OnClick="document.forms['MyForm'].action = 'Destination2.aspx'" >
BTW,IE似乎不太喜欢内联js,所以你可能不得不将form.action分配到一个单独的函数中,如下所示:

   <input  type="submit" name="doitbtn" value="do it" OnClick="SetDest1()" />   

  <SCRIPT LANGUAGE="JavaScript">
        function SetDest1() {
            document.forms["MyForm"].action = "Destination1.aspx";
        }

        function SetDest2() {
            document.forms["MyForm"].action = "Destination2.aspx";
        }

    </script>   

答案 3 :(得分:1)

以下代码的调整版本可能会有所帮助。我添加了测试警报。

$('form[name="myform"] input[type="submit"]').click(function(event){
       var $form = $('form[name="myform"]');
       if($(this).val()=='Print'){
           alert('print was pressed')   ;
           $form.attr('action','jbupdate.php');
       }
        else{
            alert('save was pressed')   ;
            $form.attr('action','ppage.php');
        }
});

//I added the following code just to check if the click handlers are called 
//before the form submission, The alert correctly shows the proper value.
$('form[name="myform"]').submit(function(event){
    alert("form action : " + $(this).attr('action'));
    //event.preventDefault();
});

你可以在http://jsfiddle.net/ryan_s/v4FtD/

玩小提琴

答案 4 :(得分:1)

更简单:

<input type="submit" formaction="someaddress/whataver" value="Do X"/>
<input type="submit" formaction="/another/address" value="Do Y"/>

答案 5 :(得分:0)

<form name="myform" onsubmit="return onsubmitform();">

你的函数名不是onsubmitform(),它的submitform()

如果你想发布数据,我建议你添加method =“post”

<form name="myform" onsubmit="return submitform();" method="post">
祝你好运;)