我有一个下拉列表[事件,问题,问题,任务]。我在最终用户登录时编写了一个代码,并且有一个名为product的标签,默认值应该是问题。但它似乎不起作用。它仍然为用户提供从列表中选择值的选项。
$j(document).ready(function() {
if(location.pathname == '/requests/new') {
var ct = currentUser.tags;
if(ct.indexOf("product") >= 0){
$j(document.getElementById("ticket_fields_75389").value = "Problem");
}
else {
$j(document.getElementById("ticket_fields_75389").value = "");
}
}
})
答案 0 :(得分:0)
注意:此答案不正确。一旦我知道OP读了我的评论,我就会删除它。
它仍然为用户提供从列表中选择值的选项。
当然,设置value
只会更改最初选择的值。如果您想“修复”select元素的值,以便用户无法更改它,则必须将其设置为只读。让我们坚持使用jQuery(你所拥有的是DOM API和jQuery †的奇怪组合):
$j("#ticket_fields_75389").val("Problem").prop('readonly', true);
†:让我们仔细看看
行$j(document.getElementById("ticket_fields_75389").value = "Problem");
这到底发生了什么?显然我们有一个函数调用($j(...)
),我们传递了一些东西。这个“东西”是表达式的结果
document.getElementById("ticket_fields_75389").value = "Problem"
按ID查找元素,并将字符串"Problem"
分配给value
属性。这是赋值表达式。赋值表达式的结果是赋值,即"Problem"
。
这是传递给$j(...)
的值,因此我们有$j("Problem");
。由于$j
引用jQuery
,因此会搜索标记名称 Problem
的所有元素,这些元素在HTML中不存在。它也会返回一个jQuery对象,但是你没有做任何事情。
因此,$j(...)
中的包装完全没有必要甚至是错误的,即使它没有抛出语法或运行时错误。