我无法使用PHP获得我的文本字段new_list_id
的值。下面是我的代码:
<select id="mymenu" size="1" name='sf_old' class='short_tf'>
<option > </option>
<option value="nothing">New Input</option>
<option value="101">101</option>
<option value="102">102</option>
</select>
<input type='text' class='short_tf' name='new_sf' id='new_list_id' style='display:none;'/>
<script type="text/javascript">
var selectmenu=document.getElementById("mymenu")
selectmenu.onchange=function(){
var index = selectmenu.selectedIndex;
if (index == '1') {
document.getElementById('new_list_id').style.display='inline';
document.getElementById('mymenu').style.display='none';
}
}
</script>
使用PHP,我可以得到我的SELECT标签mymenu
的值,如果它是一个选择,但我不能检索我的文本字段new_list_id
的值,如果它是一个存在和SELECT标签是隐藏的。
问题:我为我的文本字段得到的值是字符串"nothing"这是从我的SELECT标签。我不知道为什么。
我也使用了name属性,但它给了我相同的结果。这是我的PHP代码:
if(isset($_REQUEST['sf_old'])) {
$sf=$_REQUEST['sf_old'];
} elseif(isset($_REQUEST['new_sf'])) {
$sf=$_REQUEST['new_sf'];
} else {
$sf='';
}
echo $sf;
将元素的display
style属性更改为none
只会使在视觉上隐藏。它不会改变它是否会被发送到服务器的事实。因此,第一个条件始终为真,并且else
子句从未被触发。
你可以尝试另一种方式:
$sf = "";
if(isset($_POST['sf_old']) && isset($_POST['new_sf'])){
if($_POST['sf_old'] == "nothing"){
$sf = $_POST['new_sf'];
} else {
$sf = $_POST['sf_old'];
}
}
echo $sf;
我更喜欢直接使用$_POST
而不是$_REQUEST
。
从php你必须使用"name"属性。"new_sf" id属性主要用于客户端脚本。
try this:
<input type='text' class='short_tf' name='new_list_id' id='new_list_id' style='display:none;'/>
name
属性是PHP用来检索值的。
我假设如下:如果输入字段不为空,则需要从输入字段中获取值,否则需要从下拉列表中获取值。
你需要在你的if语句上展开一点
下面是完整的代码:
<?php
$sf='';
if(isset($_REQUEST['sf_old'])){
$sf = $_REQUEST['sf_old'];
if($sf == "nothing")
if(isset($_REQUEST['new_sf'])){
$sf = $_REQUEST['new_sf'];
}
}
echo $sf;
?>