选择$_REQUEST中显示none的元素为空字符串



我无法使用PHP获得我的文本字段new_list_id的值。下面是我的代码:

<select id="mymenu" size="1" name='sf_old' class='short_tf'>
    <option >&nbsp;</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;
    ?>

相关内容

  • 没有找到相关文章