我有一张表格
<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']))中的代码...)
谢谢
答案 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();'