首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP - if dropdown selection =某事

PHP - if dropdown selection =某事
EN

Stack Overflow用户
提问于 2011-10-27 23:38:15
回答 2查看 11K关注 0票数 0

我该如何根据下拉列表选择来创建条件语句?

假设我们有一个包含条目的下拉列表:

代码语言:javascript
复制
Alpha
Bravo
Charlie
Other

我想创建一个条件语句,其中如果Other是当前从下拉列表中选择的条目,我想回显一个声明为If Other, Please Specify的新行。但是如果它不是当前选定的条目,我不希望填充该字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-27 23:49:47

在PHP中

代码语言:javascript
复制
<select id="conditions" name="conditions">
    <option></option>
<?php
foreach($option in $optionList){
    echo "<option value=$option ";
    if($_REQUEST["conditions"] == $option){
        echo  'selected="selected"';
    }
    echo " > $option </option>";
}
echo "</select>";

if($_REQUEST["conditions"] == "Other"){
    echo '<div id="specify" style="display:block">If Other, Please Specify</div>';
}else{
    echo '<div id="specify" style="display:hidden">If Other, Please Specify</div>';
}
?>

在客户端的jQuery中

代码语言:javascript
复制
<script>
    $('#conditions').change(function(){
        if($(this).val() == "Other"){
            $('#specify').show();
        }else{
            $('#specify').hide();
        }
    });
</script>
票数 5
EN

Stack Overflow用户

发布于 2011-10-27 23:53:18

正如评论所说,你需要在javascript中做到这一点。下面的函数可以做到这一点。

在页面的<script>元素中或在您的javascript文件中包含此javascript:

代码语言:javascript
复制
function checkSelect(selId, text, outputDiv) {
  var sel = document.getElementById(selId);
  var d = sel.options[sel.selectedIndex].text;
  if (d == text) {
    document.getElementById(outputDiv).innerHTML = "If Other, Please Specify";
  } else { 
    document.getElementById(outputDiv).innerHTML = "";
  }
}

然后调整您的HTML,以便在下拉列表更改时运行此函数:

代码语言:javascript
复制
<select id='Sel1' onchange='check("Sel1", "Other", "DivReqDetails");'>
  <option value='Alpha'>Alpha</option>
  <option value='Bravo'>Bravo</option>
  <option value='Charlie'>Charlie</option>
  <option value='Other'>Other</option>
</select>
<div id='DivReqDetails'></div>

编辑:如果你可以访问jQuery,你可以通过做更多的事情来使checkSelect()更强大,而不仅仅是调整div的内容(因为你可以很容易地调整CSS,比如display:hidden;display:block;以及颜色。这里有一个例子,如果你碰巧有jQuery支持的话。

我还添加了一些改进,允许您向此函数发送所需的文本(这样您就可以让它检查多个字段并相应地显示不同的文本):

代码语言:javascript
复制
function checkSelect(selId, text, outputDiv, outputText) {
  if ($("#"+selId).text() == text) {
    $("#"+outputDiv).html(outputText).css("display","block").css("color","red");
  } else { 
    $("#"+outputDiv).html("").css("display","none").css("color","black");
  }
}

或者,如果要在表单的不同部分显示几个这样的警告,则可以基于CSS类而不是单个项进行更改。请注意,这将更改所有的警告div,所以如果您正在寻找每个字段的反馈,这不是可行的方法……

代码语言:javascript
复制
function checkSelect(selId, text, outputCssClass, outputText) {
  if ($("#"+selId).text() == text) {
    $("."+outputCssClass).html(outputText).css("display","block").css("color","red");
  } else { 
    $("."+outputCssClass).html("").css("display","none").css("color","black");
  }
}

显然,您可以调整在这两种情况下所做的更改。如果您从来没有任何理由调整显示的文本,那么您应该完全删除.html()部件。类似地,如果您只在颜色为红色时显示此div,请放弃该调整,只需将样式硬编码为您想要的样式即可。通过使用对.css()的类似调用,可以更改有关相关元素的任何其他css属性

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7918476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档