选择“请选择”选项时如何清空选择框

时间:2013-01-10 02:00:15

标签: php jquery

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

<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('');                   
    }
});

3 个答案:

答案 0 :(得分: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> 

答案 1 :(得分:0)

不是最好的方式,但它是jquery ......

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

答案 2 :(得分:0)

你有2个选择吗?要么在UI级别,要么在服务器级别或两者上过滤它。

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

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

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

如果$_POST['session']$_GET['session']都是''(空格)并且您不应继续使用数据库查询

,则必须抓住它