如何检测按下哪个提交按钮?
我在PHP中有一个脚本,我需要检测HTML页面中按下哪个按钮。我发现了很多其他人提出的类似问题,但我遇到了问题。如何检测按下哪个提交按钮?
HTML
<form method="post" action="kode/kode_newsletter_operation.php" id="newsletter_step3Form">
<p>
<label>Schedule newsletter:</label>
<select name="send_date_month" id="send_date_month">
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
-
<select name="send_date_day" id="send_date_day">
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
-
<select name="send_date_year" id="send_date_year">
<option value='2012'>2012</option><option value='2013'>2013</option> </select>
<select name="send_date_hour" id="send_date_hour">
<option value="00">0</option>
<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
</select>:<select name="send_date_min" id="send_date_min">
<option value="00">00</option>
<option value="00">05</option>
<option value="10">10</option>
<option value="00">15</option>
<option value="20">20</option>
<option value="00">25</option>
<option value="30">30</option>
<option value="00">35</option>
<option value="40">40</option>
<option value="00">45</option>
<option value="50">50</option>
<option value="00">55</option>
</select>
<div>Server Time: October 12, 2012 04:54</div>
</p>
<p>
<label for="send_date">Preview in Email:</label>
<input type="text" id="preview_email" value="" name="preview_email" />
<input type="button" id="preview_btn" name="preview_btn" class="btn btn_red" onclick="previewSendMail(1)" value="Send Preview"/>
</p>
<p> </p>
<div id="kode_result"></div>
<div id="content_buttons">
<input type="button" class="btn btn_blue big" name="goback" value="Last Step" onclick="window.location.href='./newsletter_create_step2.php?id=1'" />
<input type="submit" name="submit_btn_now" value="Send now!" class=" btn btn_red big"/>
<input type="submit" name="submit_btn" value="Schedule" class=" btn btn_green big"/>
<input name="action" type="hidden" value="newsletter_step3" />
<input type="hidden" name="newsletter_id" id="newsletter_id" value="1"/>
</div>
</form>
PHP
print_r($_POST);
输出
Array(
[send_date_month] => 10
[send_date_day] => 12
[send_date_year] => 2012
[send_date_hour] => 01
[send_date_min] => 50
[preview_email] =>
[action] => newsletter_step3
[newsletter_id] => 1
)
两个按钮是<form>
标签内,但$_POST
阵列不包括任何有关他们的信息。我究竟做错了什么?最近的浏览器没有发送关于提交按钮的信息,或者我错过了什么? 我没有JavaScript技能来为此开发解决方法,我只知道PHP。
在此先感谢。
你有JQuery的或任何其他JS库的形式运行?他们倾向于接管提交事件,因此提交不是来自实际的提交输入。尝试没有js库吗?
编辑:这里是一个变通:
$('#submit_btn_now').on('click', function() {
var hiddensubmit=document.createElement('input');
hiddensubmit.value = this.value;
hiddensubmit.name = this.name;
hiddensubmit.setAttribute('hidden','hidden');
$('#newsletter_step3Form').append(hiddensubmit);
$('#newsletter_step3Form').submit()
return false;
});
为提交按钮指定相同的名称属性,但使用不同的值,然后您可以对提交按钮上使用的文本进行测试。
<pre><? print_r($_POST);?></pre>
<form method="post">
<input type="submit" name="button" value="AAA">
<input type="submit" name="button" value="BBB">
</form>
输出继电器:
Array
(
[button] => AAA
)
编辑:其实,我什么也看不到你的代码错误?
<pre><? print_r($_POST);?></pre>
<form method="post">
<input type="submit" name="submit_btn_now" value="Send now!" class=" btn btn_red big"/>
<input type="submit" name="submit_btn" value="Schedule" class=" btn btn_green big"/>
</form>
输出只点击一个:
Array
(
[submit_btn_now] => Send now!
)
+1,任何想法为什么他们没有出现在$ _POST? –
其实,我把@gtugablue的代码放到了我的测试中(显然不知道他的
我在想什么是他除了按钮之外什么都没有,就像你的例子,并且GET作为方法,这给了他一个空的POST。 –
如果你要使用所有按钮相同的值(因为它是显示为文本的值),你可以使用name属性的信息持有人并加上前缀。获取价值的方式则是:
$information = substr(
end(
array_filter(
array_keys($_REQUEST),
function ($key) { return substr($key, 0, strlen(PREFIX)) == PREFIX; }
)
),
strlen(PREFIX)
);
设置两个按钮名属性为相同值。
给每个按钮不同值属性,就像这样:
<input type="submit" name="submit" value="Log In">
<input type="submit" name="submit" value="Sign Up">
然后你就可以在你的PHP使用如果语句,就像这样:
if ($_POST['submit']=="Log In") {}
else {} // ELSE DETECTS THE "Sign Up" BUTTON, OR ANY OTHER BUTTON WITH A DIFFERENT VALUE
我觉得这个漂亮很多东西给你准确的答案你正在寻找:一种方法来检测哪些按钮被按下使用PHP和没有JavaScript。
您将不得不将按钮放在两个单独的窗体中。 – Cyclonecode
从print_r($ _ POST)得到的输出是什么? – maiorano84
不需要两种不同的形式。我已经使用了数百次单个表单中的两个提交按钮。 – maiorano84