【问题标题】:How to empty select box when "Please Select" option is chosen选择“请选择”选项时如何清空选择框
【发布时间】:2013-01-10 02:00:14
【问题描述】:

下面有一个下拉菜单和一个空的选择框:

<select name="session" id="sessionsDrop">
    <option value="">Please Select</option>
    <option value='20'>EWYGC - 10-01-2013 - 09:00</option>
    <option value='22'>WDFRK - 11-01-2013 - 10:05</option>
</select> </p> 

$studentSELECT = "";  
$studentSELECT .= '<select name="studenttextarea" id="studentselect" size="6">';
$studentSELECT .= '</select>'; 

以上在addstudent.php页面:

现在发生的情况是我有一个 php 代码,根据从下拉菜单中选择的评估,它会运行一个查询,如果找到数据库中的行,它会在选择框中显示一个学生列表,如果没有找到任何行,然后它只显示一条消息,说明在选择框中的评估中没有找到学生。代码如下,位于addedstudents.php 页面中,可通过ajax 访问。

$studentnum = $currentstudentstmt->num_rows();   
$studentSELECT = "";     

if($studentnum == 0){
    $studentSELECT .= "<option disabled='disabled' class='red' value=''>No Students currently in this Assessment</option>"; 
} else {   
    while ( $currentstudentstmt->fetch() ) {
       $studentSELECT .= sprintf("<option disabled='disabled' value='%s'>%s - %s %s</option>", $dbStudentId, $dbStudentAlias, $dbStudentForename, $dbStudentSurname) . PHP_EOL; 
    }
}

echo $studentSELECT;

我遇到的问题是,如果用户选择了Please Select 选项,它仍然会显示消息指出没有找到评估,这是因为显然此查询中没有模块,所以它认为它没有行显示消息。但是,如果选择了Please Select 选项,我不希望显示它,我只想让选择框为空。

问题是,即使我尝试使用 jquery 来执行此操作,但会发生选择框变空但几毫秒后返回消息的情况。

我的问题是,如果从下拉菜单中选择了 Please Select 选项,那么显示空选择框的最佳方法是什么?

以下是通过 jquery 进行的尝试:

$('#sessionsDrop').change( function(){
    if( $(this).val() == '' ){
        $('#studentselect').val('');                   
    }
});

【问题讨论】:

  • 为什么不在“请选择”选项中添加 DISABLED 属性?
  • 你想让它无法点击吗?
  • @ianace 不,我不想让它不可点击,如果选择了请选择,我只是希望选择框为空。
  • 如果是这种情况,请参阅我的回答

标签: php jquery


【解决方案1】:

只需将disabled 添加到“请选择”框的标记中,如下所示:

<select name="session" id="sessionsDrop">
    <option disabled value="">Please Select</option>
    <option value='20'>EWYGC - 10-01-2013 - 09:00</option>
    <option value='22'>WDFRK - 11-01-2013 - 10:05</option>
</select> </p> 

【讨论】:

  • 我不想禁用它,很好的答案,但我不想禁用它
  • 愚蠢的问题,但为什么你需要在下拉菜单中选择“请选择”?为什么不把它做成一个空框,然后把“请选择”放​​在它上面的一个 div 中呢?
  • 要求选择“请选择”选项并显示一个空的选择框。我别无选择
  • 这听起来像是对 HTML 的混蛋和糟糕的任务。如果他让我这样做,我会打你的教授的脸
  • 它的投资组合练习,我只是坚持这个,通常我会按照你提到的那样禁用,但在投资组合问题中,它希望我在选择请选择选项时清空&lt;select&gt;。我知道这看起来很奇怪
【解决方案2】:

你有两种选择;在 UI 级别或服务器级别或两者上过滤它。

1.) 在 js/jquery 级别上(我只需要给你一个描述/伪代码,这样你就可以解释这个)

如果选择的值为"",则过滤掉,然后不要继续; 与@vortextangent 的答案相同,仅检查$('#sessionsDrop').val() != "" 是否应该继续

2.) 在服务器端级别,我假设在您可以查询数据库之前,您已经拥有了这个 $_POST['session']$_GET['session'] 包含下拉列表的值

如果$_POST['session']$_GET['session'] 都将是''(空白),你只需要抓住它,你不应该继续数据库查询

【讨论】:

    【解决方案3】:

    不是最好的方法,但它是用 jquery...

    .ajax({
        success: function () {
            //your current code here 
            if ($('#sessionsDrop').val() == "") {
                $('#studentselect').children().remove();
            }
    });
    

    【讨论】:

    • 是的,但就像我在问题中所说的那样,我有一个 php 代码,它计算行数并声明如果查询中有 0 行,则显示消息,please select 选项将触发此并因此显示消息。我需要 jquery 来覆盖它以便能够显示空白选择框或 php 来声明如果选择了请选择选项然后选择选项为空白
    • 把这个放到你的ajax成功回调中?
    猜你喜欢
    • 1970-01-01
    • 2018-04-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2020-12-28
    相关资源
    最近更新 更多