【问题标题】:Can't get value of my textfield无法获得我的文本字段的值
【发布时间】:2012-12-22 06:45:25
【问题描述】:

无法使用 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 标记被隐藏,我无法检索它的值。

(问题) 我为我的文本字段获得的值是来自我的 SELECT 标记的字符串“nothing”。想不通为什么。 - 我是一个新手程序员,也很抱歉我的英语不好..非常感谢您的帮助。

我也在使用 name 属性,但它给了我相同的结果。请检查我的 php 代码。谢谢

if(isset($_REQUEST['sf_old']))
{    $sf=$_REQUEST['sf_old'];}
elseif(isset($_REQUEST['new_sf']))
{    $sf=$_REQUEST['new_sf'];}
else
{    $sf='';}

echo $sf;

【问题讨论】:

  • PHP 标记问题中没有 PHP 代码。讽刺
  • @Alexander 请检查我的 php 代码。对不起,我应该早点把它包括在内。谢谢
  • 是的,你有一个误解,你可以在下面查看

标签: php javascript select textfield option


【解决方案1】:

将元素的 display 样式属性更改为 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

【讨论】:

  • 你说得对。谢谢你的解释,对我很有帮助。
【解决方案2】:

在 php 中,您必须使用“名称”属性。 “new_sf” id 属性主要用于客户端脚本。

【讨论】:

  • 感谢您的回复。我也在使用“名称”属性,但它给了我相同的结果。我总是从
  • @user1957878 即使选择标签被“隐藏”,php 代码仍然可以看到它及其值,这就是为什么你总是得到“无”,这是选择选项的默认值。
【解决方案3】:

试试这个:

<input type='text' class='short_tf' name='new_list_id' id='new_list_id' style='display:none;'/>

name 属性是 PHP 用来检索值的属性。

【讨论】:

  • @scartag 我也在使用 name 属性,但它给了我相同的值,即字符串“nothing”,即使我为我的文本字段输入了新值。
  • 尝试以$_POST['new_list_id']接收它
【解决方案4】:

我假设: 如果输入字段不为空,则您希望从输入字段中获取值,否则您希望从下拉列表中获取值。

你需要稍微扩展一下你的 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;
    ?>

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多