2013-12-18 153 views
0

我想创建一个选择框,刷新其选项时,用户选择,但我遇到了一个问题,我无法图浩解决。 作为jQuery的初学者,我已经为同一个程序提出了一个建议:Keeping selected an option in select dropdown with jquery after refresh选择框丢失时刷新选项

按照现在的建议,它几乎可以完全工作,但我希望下拉菜单的行为与非动态的完全一样,打开时保持选定的选项,除了选项列表也刷新:现在它“几乎”保持选定的值(它将它保留在下拉列表中),但当元素失去焦点给页面中的其他人时我重置为第一个选项,但我不知道如何解决问题。我试图将一个带有ajax的变量传递给php页面,以便在刷新时选中它,但当焦点发生变化时它仍然会重置。

的JS代码:

$(document).ready(function() { 
$("#UsersDiv").focusin(function() { 
     var UsersSelect = $('#UsersList').val(); 
     $.get( 
      "userlist.php", 
      { UserSelect1: UsersSelect }, 
      function(data) { 
      $('#UsersList').html(data); 
      } 
     ); 
    }) 
    $('#UsersList').val(UsersSelect); 
}); 

HTML页面:

<div name="UsersDiv" id="UsersDiv"> 
<select name="UsersList" id="UsersList"> 
<option value="User1">User1</option> 
<option value="User2">User2</option> 
</select> 
</div> 

PHP文件(以下简称“用户”排列到位的SQL查询,都正常工作):

$UserSelect1 = $_GET['UserSelect1']; 
$users=array('User1','User2','User3','User4','User5'); 

echo '<select name="UsersList" id="UsersList">'; 

foreach($users as $list): 
echo '<option value="'.$list.'" '; 
if ($UserSelect1 == $list) { 
    echo 'selected=selected'; 
} 
echo '>'.$list.'</option>'; 
endforeach; 

echo '</select>'; 

感谢大家的答案。

回答

0
$("#UsersDiv") 

比你分配这个

$select=$(this) // $select is $("#UsersDiv"); 

比你正试图从DIV

UsersSelect = $select.val() // $select.val() is undefined 
+0

我已经更新和测试脚本获得VAL,现在看来仍不失var或者仅仅是为了在刷新之后不正确地设置它。 – SophieV

+0

首先$(document).ready(function(){是函数,当你的DOM被加载时执行,所以$('#UsersList').val(UsersSelect);实际上什么都不做。 - 在PHP中放入一些var_dump(),并在你的$ .get成功函数中加入alert(data)。很难说错误是什么,因为我认为这个脚本现在可以正常工作了。我在localhsot上检查了这段代码,如果在载入页面上select的值是User2,那么它保持选中状态。 – pushOk

+0

它几乎可以在Chrome上运行(选择需要点击两次以刷新),但仍然使用FF重置为null,当显示一个白色框时如果焦点改变(例如,点击页面上的另一个元素),则重新加载并丢失选择。 – SophieV