在单击选择选项时,使下拉菜单消失

时间:2012-10-24 00:44:16

标签: javascript jquery html

我有几个表单元素,点击后更新数据库并消失。

首先,我有一个按钮,显示登记。单击它后,将更新数据库并显示下拉列表以代替按钮。在下拉列表中,有一些供用户选择的位置,这些位置具有相应位置编号的值,在单击更新数据库时。最后一个选项标记为签出,点击后,数据库应该最后一次更新,然后出现签出的红色文字。

这是我的代码:

<button class="checkIn">Check In</button>

<form method='post' class='myForm' action=''>

<td>
<select name='locationSelect' class='locationSelect'>
    <option value='1'>Exam Room 1</option>
    <option value='2'>Exam Room 2</option>
    <option value='3'>Exam Room 3</option>
    <option value='4'>Exam Room 4</option>
    <option value='CheckOut'>Check Out</option>
</select>
</form>

这里是jquery

<script src="http://code.jquery.com/jquery-1.8.2.js"></script>

<script type="text/javascript">
$(document).ready(function() {    
    $('.locationSelect').hide();
    $('.finished').hide();
});

$('.checkIn').click(function(){
    $e = $(this);
    $.ajax({
    type: "POST",
    url: "changeloc.php",
    data: "checkIn="+$(this).val(),
    success: function(){
      $('.checkIn').css("display","none");
      $('.locationSelect').show();

    }
    });
});

$('.locationSelect').change(function(){
    $e = $(this);
    $.ajax({
       type: "POST",
       url: "changeloc.php",
       data: "locationSelect="+$(this).val(),
       success: function(){

       }
    });
});
$('.locationSelect option[value="CheckOut"]').click(function(){
    $e = $(this);
    $.ajax({
       type: "POST",
       url: "changeloc.php",
       data: "checkOut="+$(this).val(),
       success: function(){
       $('.locationSelect').css("display","none");
       $('.finished').show();
       alert('done');
       },
       error: function(request){
       alert(request.responseText);
       }
    });
});

</script>

问题是一切都有效,直到用户点击结帐,然后不会出现红色文字,下拉菜单也不会消失。有什么问题?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在下拉选择列表中使用签出按钮是不对的。这些列表适用于选项,而不适用于命令。

为什么你没有在列表后面的结帐按钮

<button class="checkOut" style="display:none;" value="Check Out" />

这样,一旦您的房间列表已填充,您只需再次将结帐按钮设置为可见即可。这意味着页面逻辑流程(签入 - 选择 - 签出)。

对于红色文字,请用这样的内容替换下拉列表?

$(".checkOut").click(function(e) {
  $(".locationSelect").html("<p style='color:red'>Checked out!</p>");
});

只是值得深思。

或者,您可以在$('.locationSelect').change()处理程序中检查所选选项。

$('.locationSelect').change(function(e) {
  if($(this).children(":selected").val() === "CheckOut") {
    // Perform checkout logic.
  }
  else {
    // Perform room select logic.
  }
});