显示/隐藏表单元素的问题

时间:2012-10-23 00:22:34

标签: javascript jquery html

我有一个网站,通过使用表单元素来更新用户位置。

用户首先点击标有签入的按钮。这会更新数据库(通过使用AJAX在另一页上的php)。点击签入后,系统会向用户显示一个包含位置列表的选择/下拉列表。用户单击选择中的一个位置,然后再次使用该位置更新php页面。用户可以多次执行此操作,每次更新数据库。当用户完成后,他将选择/下拉列表向下滚动到最后一个名为签出的选项。当用户点击结帐时,数据库会再次更新,并显示红色文本而不是选择说“已检出”。

这是我的代码(减去php /数据库的东西):

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

<script type="text/javascript">

$(document).ready(function() {
  // Hide the form on load      
  $('.locationSelect').hide();
  // Hide the completed message
  $('.finished').hide();
});

// When someone clicks checkin this function will be called
$('.checkIn').click(function(){
$e = $(this);
 $.ajax({
    type: "POST",
    url: "changeloc.php", // this page adds date to the database
    data: "checkIn="+$(this).val(), // we are sending $_POST['checkIn']
    success: function(){
       // Display the form once AJAX is finished 
       $('#myForm').show();
    }
 });
});

// This function will be called when someone uses the select field
$('.[locationSelect]').change(function(){
  $e = $(this);
  $.ajax({
    type: "POST",
    url: "changeloc.php",
    data: "locationSelect="+$(this).val(),
    success: function(){
       // Display the form once the AJAX is finished 
       alert('Done');
    }
  });
});


</script>

这是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='Check Out'>CheckOut</option>
</select>
</form>


<div class='finished' style='color:#ff0000;'>Checked Out</div>

问题是,当您点击签入时,选择不会显示。我检查了Chrome错误控制台,但没有出现错误。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

嗯,这里:

// Display the form once AJAX is finished 
$('#myForm').show();

应该是这样的:

// Display the form once AJAX is finished 
$('.myForm').show();

除此之外,请验证您的Ajax查询是否正确返回,否则此代码将无法运行。

答案 1 :(得分:0)

您可能需要考虑对您的ajax调用进行错误处理,以查看它们是否正确返回

 success: function(){
  alert('done');
 },
 error: function(request){
  alert(request.responseText);
 }

这将有助于排除其是ajax问题还是与其他问题相关的问题,例如语法