下拉列表中的默认值未被选中

时间:2013-10-03 06:44:26

标签: javascript

我有一个下拉列表[事件,问题,问题,任务]。我在最终用户登录时编写了一个代码,并且有一个名为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 = "");
 } 

 }
 })

1 个答案:

答案 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(...)中的包装完全没有必要甚至是错误的,即使它没有抛出语法或运行时错误。