0

在“编辑文章”页面中,我有一个选择列表,其中显示作者的名字和姓氏,以及 authorId 作为值。以及文章上下文和标题等(使用不同的方法获取) - 尽管此方法还包含特定文章的 authorId。

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

我有的:

回声''; //遍历选项列表中的作者姓名 $authors_name

            foreach($authors_name as $nameRow){

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

'.$nameRow['LastName'] .''; }

          echo'</select>';

和jQuery:

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

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

或者

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(); if($("select option[value='+currID+']").prop('selected',true));​</p>

即使这样,它也不会将 selected="selected" 应用于 value="1" 的选项

4

1 回答 1

0

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

首先,您有语法问题,应该在浏览器控制台中引发错误。只需查看控制台就可以为您节省这一步

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

应该:

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

下一个语法问题出现在第二个版本中,当您传入currID字符串时,您将其添加为字符串文本,而不是作为连接到字符串中的变量。

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

但是,这仍然是一个问题,因为您正在设置attrnot getting it. Useprop` 方法,而不是它会返回一个布尔值

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

第一个版本的问题是:

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

再次使用语法(使用浏览器控制台!!!) ...missing $。即使使用正确的语法,您也无法在一个if元素集合中检查所有值。它只会返回第一个的值。这就像为 20 个不同的人要求一个电话号码。您要么必须使用方法遍历所有集合,并使用您的或使用each()检查每个集合iffilter()

 $('.authorId').filter(function(){
       return this.value == currID;
 }).prop('selected',true)
于 2012-11-22T04:28:11.123 回答