我在表单中有一个下拉列表,其中onchange事件由jquery获取侦听并导致AJAX调用。然后Jquery根据服务器的回答设置/删除selected
属性:
$( document ).ready(function(){
$("#user_select").on("change", function(){
var value = $("#user_select").val();
$.ajax({
url: "../ajax/change_permission.php",
method: "POST",
data: { user_id: value }
}).done(function(data){
var i = 0;
while(i < 4){
$("#perm_"+i).attr("selected", false);
$("#perm_"+i).removeClass("active_perm");
i++;
}
$("#perm_"+data).attr("selected", true);
$("#perm_"+data).addClass("active_perm");
});
});
});
在我的user_select
下拉列表中是我的用户,如果我选择它,则应显示其权限。
表单(选择应设置为的位置)如下所示:
<select id="user_permission" class="form-control">
<option id="perm_0" value="0">Berechtigungsstufe</option>
<option id="perm_1" value="1">Administrator</option>
<option id="perm_2" value="2">Super-User</option>
<option id="perm_3" value="3">User</option>
</select>
现在的问题是,如果一个选项已被选中一次,则无法再将其设置为活动状态,或者更好地说,所选标签仍然适用于该选项,但它不会再被更改(只是留在选项零)。在我选择了每个选项一次后,选择看起来像这样:
<select id="user_permission" class="form-control">
<option id="perm_0" value="0">Berechtigungsstufe</option>
<option id="perm_1" value="1" class="">Administrator</option>
<option id="perm_2" value="2" class="">Super-User</option>
<option id="perm_3" value="3" class="">User</option>
</select>
selected="selected"
属性仍会应用于该选项,但不再更改所选选项(显示不会更改)。已经认为它因为空类标记而烦恼,但是如果我将其删除它就没有任何改变。
有人知道可能导致这个问题的原因吗?
编辑:总而言之,JSfiddle只是没有随机值:p
编辑ANSWERE:Jquery“.attr”在Firefox 42.0中无法正常工作。相反,我使用了“。prop”,这是正确的。
答案 0 :(得分:1)
为什么使用select下的选项,您可以直接使用$("#user_permission").val(1)
答案 1 :(得分:1)
Jquery有两个不同的函数attr()和prop()。这两个用于不同的目的。 attr适用于所有属性。道具是属性。在你的情况下,下拉元素&#34;选择&#34;不是属性。这是一个属性。因此,您应该使用如下的prop函数。
$("#perm_"+data).prop("selected", true);
注意:然而,一些现代浏览器适用于两者,但是为了跨浏览器兼容性,总是尝试使用正确的浏览器。