更改下拉提交不执行PHP代码

时间:2014-02-02 01:10:14

标签: javascript php forms

我有一张表格

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 

表单有多页输入类型文本和1个下拉菜单。

我还有一个名为(submit1)的提交按钮

<input class="submit-button" type="submit" name="submit1" value="UPDATE MY INFORMATION" />

我的PHP读起来像这样:

if (isset($_POST['submit1'])) 
{ .... }

如果我按下按钮,它就可以了,没问题。

但我也想从下拉菜单中提交表单更改...所以它可以通过按下按钮或下拉菜单中的更改来执行...所以我的下拉列表中有以下内容

<select name="country"  onchange="this.form.submit()">

当我选择下拉列表时,页面刷新,但我的PHP中的代码没有执行...我认为它与$ _POST ['submit1']的名称有关...

如何更改onchange =“this.form.submit()以执行if(isset($ _ POST ['submit1']))中的代码...)

谢谢

3 个答案:

答案 0 :(得分:0)

你应该避免像这样的内联javascript。这很丑陋,降低了可读性。更简单的方法是提供元素ID,如下所示:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" id="myForm"> 

但如果您不想,可以使用QuerySelector并获取输入的name属性。

var x = document.querySelector("[name='country']");
x.addEventListener("change",function() {
    this.parentNode.submit(); //get form parent and submit
});

我有点困惑为什么你也要检查一个值的提交按钮,你不想要:

if (isset($_POST['country'])) { ... }

相反?

答案 1 :(得分:0)

在提交按钮上的document.getElementById('submit1').click()设置与其名称相同后,您可以id。当然,你也会这样做onchange。我会将我的JavaScript与HTML分开,因此它会缓存到您的浏览器内存中。为您的输入,选择等提供与其名称相同的id,但单选按钮和可能的复选框除外。

让我们从一些common.js开始:

//<![CDATA[
var doc = document, bod = doc.body;
var IE = parseFloat(navigator.appVersion.split('MSIE')[1]);
bod.className = 'js';
function gteIE(version, className){
  if(IE >= version)bod.className = className;
}
function E(e){
  return doc.getElementById(e);
}
//]]>

现在为您的otherpage.php

//<![CDATA[
var cntry = E('country'), sub1 = E('submit1');
cntry.onchange = function(){
  sub1.click();
}
// note that the format E('submit1').click(); would also work
//]]>

当然,你应该:

  <script type='text/javascript' src='common.js'></script>
  <script type='text/javascript' src='otherpage.js'></script>
</body>
</html>

答案 2 :(得分:0)

检查isset($_POST['country']) 并在onchange中将此添加到下拉列表中,

onchange= 'document.getElementsByName("submit1")[0].click();'