我如何检测哪个提交按钮被按下? [英] How can I detect which submit button was pressed?

查看:113
本文介绍了我如何检测哪个提交按钮被按下?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在PHP中有一个脚本,我需要检测HTML页面中哪个按钮被按下。我发现了很多其他人提出的类似问题,但我遇到了问题。



HTML

 < form method =postaction =kode / kode_newsletter_operation.phpid =newsletter_step3Form> 
< p>
< label>时间表简讯:< / label>
< 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>
-
< 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_minid =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>服务器时间:2012年10月12日04:54< / div>
< / p>
< p>
< label for =send_date>在电子邮件中预览:< / label>
< input type =textid =preview_emailvalue =name =preview_email/>
< input type =buttonid =preview_btnname =preview_btnclass =btn btn_redonclick =previewSendMail(1)value =发送预览/>
< / p>
< p>& nbsp; < / p为H.
< div id =kode_result>< / div>
< div id =content_buttons>
< input type =buttonclass =btn btn_blue bigname =gobackvalue =Last Steponclick =window.location.href ='。/ newsletter_create_step2.php?id = 1' />
< input type =submitname =submit_btn_nowvalue =立即发送! class =btn btn_red big/>
< input type =submitname =submit_btnvalue =Scheduleclass =btn btn_green big/>
< input name =actiontype =hiddenvalue =newsletter_step3/>
< input type =hiddenname =newsletter_idid =newsletter_idvalue =1/>
< / div>
< / form>

PHP

 的print_r($ _ POST); 

输出

 <$ 
[send_date_month] => 10
[send_date_day] => 12
[send_date_year] => 2012
[send_date_hour] => 01
[send_date_min] => 50
[preview_email] =>
[动作] => newsletter_step3
[newsletter_id] => 1

这两个按钮位于< form> 标签内但 $ _ POST 数组不包含任何关于它们的信息。我究竟做错了什么?最近的浏览器没有发送关于提交按钮的信息,或者我错过了什么?
我没有JavaScript技能来为此开发一种解决方法,我只知道PHP。



预先感谢。

解决方案

你有没有在窗体上运行JQuery或其他JS库?他们倾向于接管提交事件,因此提交不是来自实际的提交输入。试试它没有一个js库?



编辑:这是一个工作:

 <$ c'c> $('#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;
});


I have a script in PHP where I need to detect which button was pressed in a HTML page. I have found lots of similar questions asked by other people, but I am having problems.

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>&nbsp;
                            <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>&nbsp; </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);

Output

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
)

Both buttons are inside the <form> tag but the $_POST array doesn't include any info about them. What am I doing wrong? Do the most recent browsers send no information about the submit button or am I missing something? I have no skills in javascript to develop a workaround for this, I only know PHP.

Thanks in advance.

解决方案

Do you have JQuery or any other JS libraries running on your form? They tend to take over the submit event and thus the submit doesn't come from the actual submit input. Try it without a js library?

EDIT: Here is a work around:

$('#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;
});

这篇关于我如何检测哪个提交按钮被按下?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆