2012-11-22 26 views
0

在“编辑文章”页面中,我有一个选择列表,其中显示了作者的名字和姓氏,以及authorId作为值。以及文章上下文和标题等(用不同的方法提取) - 尽管此方法也包含特定文章的authorId。将selected =“selected”分配给动态选项列表

我需要在选项列表中选择文章的作者,而不是默认选择列表中的第一个选项。

我有什么:

回声 ''; “。$ nameRow //通过选项列表$ authors_name

  foreach($authors_name as $nameRow){ 

       echo'<option class="authorId" value = "' . $nameRow['AuthorID'] . '">'. $nameRow['FirstName'].' 

[ '姓氏'。 '' 作者姓名循环; 。 }

  echo'</select>'; 

和jquery的:

VAR currID =( '#selectAuthor')VAL();

if(('.authorId').val() == currID){ 
      $('.authorId').addClass('new_class') 
      $('.new_class').prop('selected',true); 
    } 

OR

VAR currID =( '#selectAuthor')VAL();

if($("select option[value=currID]").attr('selected','selected')); 

任何帮助将不胜感激,我希望我所试图做的是明确的。 在此先感谢

我曾经使用过常规输入简化它,并在jsfiddle.net 这里检查它是HTML

“;

<option value = "2">Name val 2</option> 
<option value = "5">Name val 5</option> 
<option value = "1">Name val 1</option> 

,这里是jQuery的

VAR currID = $( '#selectAuthor')VAL()。 如果($( “选择选项[值= '+ currID +']”)丙( '选择',真));

甚至那么它不选定= “选择” 申请选项与值=“1”

回答

0

我不确定为什么你不只是在您的服务器代码中添加selected。至于你的jQuery,你有几个问题。

首先,你有语法问题,应该抛出错误在您的浏览器控制台。简单地看控制台会救你这一步

var currID = ('#selectAuthor').val(); 

应该是:

var currID = $('#selectAuthor').val(); 

下一页语法问题是在第二个版本,当你通过currID成字符串,你将它添加为字符串文本,而不是连接成字符串的变量。

if($("select option[value='+currID+']").attr('selected','selected')); 

然而,这仍然是一个问题,因为你正在设置attrgetting it. Use prop`方法,而不是一个会retuen一个布尔

if($("select option[value='+currID+']").prop('selected')); 

问题与第一个版本是:

if(('.authorId').val() == currID) 

语法再次(使用浏览器控制台!!!)...缺少$。即使使用正确的语法,也不能检查一个元素集合中的一个if的所有值。它只会返回第一个的值。这就像为20个不同的人要求一个电话号码一样。你要么使用each()方法,并检查每一个与你的if或使用filter()

$('.authorId').filter(function(){ 
     return this.value == currID; 
}).prop('selected',true) 
+0

谢谢您的回答必须遍历所有的集合,@charlietfl,因此我固定的代码,它不工作,和它不会与你的答案有任何关系 - 我相信我只是做得不对,我想尝试在我的服务器代码中按照你的建议做 - 你能帮我吗?正如你所看到的,我在这方面真的很新颖。 – leemjac

+0

必须检查错误!这是第一步的关键步骤。将一些示例html和您的代码放入jsfiddle.net中的演示 – charlietfl

相关问题