需要帮助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" />
我想根据按下的按钮将此信息发布到这些操作页面。
答案 0 :(得分:3)
如果您查看JavaScript控制台,当您尝试提交表单时会看到错误消息,该表单会告诉您错误的大部分内容:在表单的submit
处理程序中,您正在尝试调用名为onsubmitform
的函数:
<form name="myform" onsubmit="return onsubmitform();">
<!-- ^--- here -->
...但您的功能实际上称为submitform
:
<script type="text/javascript">
function submitform()
// ^--- here
如果你使这些名字匹配,它可能大部分都有用,虽然我不是完全确定期望提交按钮的click
事件在表单{{1}之前触发处理程序是完全可靠的跨浏览器。
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();
});
玩小提琴
答案 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">
祝你好运;)