我的页面上有两个表单......
<form method="post" action="">
<input type="text" name="name" id="name"/>
<input type="submit" name="form1_submit_pushed"/>
</form>
<form method="post" action="">
<input type="submit" name="form2_submit_pushed/>
</form>
在我的php端,我希望能够在按下第二个表单的提交按钮时知道文本输入“name”的值。有点像......
if(isset($_POST['form2_submit_pushed']))
{
echo $_POST['name']; //or something else?
}
背后的原因是第一个表单有一堆我在第二次表单提交时不需要的数据。
答案 0 :(得分:1)
你可以这样做......这段代码使用jQuery:
<form id="form1" method="post" action="">
<input type="text" name="name" id="name"/>
<input type="submit" name="form1_submit_pushed"/>
<input type="hidden" name="form2_submit_pushed" id="form2_submit_pushed">
</form>
<form id="form2" method="post" action="">
<input type="submit" name="form2_submit_pushed"/>
</form>
<script>
$('#form2').submit(function(event) {
//prevent form2 from submitting and submit form1 instead...
event.preventDefault();
//before submitting, indicate that the "form2_submit_pushed" button was pushed
$('#form2_submit_pushed').val(true);
//submit form1
$('#form1').submit();
});
</script>
...但为什么你会想要我不知道。为什么不将所有控件都放在同一个窗体中呢? HTML旨在将信息从一个表单(一次)发送到服务器......
更新:抱歉,我没有注意到您在哪里解释您想要这样做的原因。如果您想更明确地控制发送到服务器的内容,我建议使用AJAX提交表单。查看https://api.jquery.com/serializeArray/和https://api.jquery.com/jQuery.ajax/
答案 1 :(得分:0)
如果我在这里错了,请纠正我,但我相信普通HTML只会发布您发布的表单中的输入。一种选择是在第二个表单上有一个隐藏的输入,在输入的更改事件期间通过javascript更新。
所以,你可以做这样的事情(我不建议使用内联javascript,但它应该让你朝着正确的方向前进):
<form method="post" action="">
<input type="text" name="name" id="name" onchange="document.getElementById('hiddenname').value=this.value"/>
<input type="submit" name="form1_submit_pushed"/>
</form>
<form method="post" action="">
<input type="hidden" name="hiddenname" id="hiddenname"/>
<input type="submit" name="form2_submit_pushed/>
</form>
然后你只需要使用它 $ _POST [&#39; hiddenname&#39;];