在“编辑文章”页面中,我有一个选择列表,显示作者的姓名,以及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); }
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(); if($(“select option [value ='+ currID +']”)。prop('selected',true));
即便如此,它也不会将selected =“selected”应用于value =“1”的选项
答案 0 :(得分:0)
我不确定您为什么不在服务器代码中添加selected
。至于你的jQuery,你有几个问题。
首先,您有语法问题,应该在浏览器控制台中抛出错误。只需查看控制台就可以为您节省这一步
var currID = ('#selectAuthor').val();
应该是:
var currID = $('#selectAuthor').val();
当您将currID
传递给字符串时,下一个语法问题出现在第二个版本中,您将其添加为字符串文本,而不是作为连接到字符串中的变量。
if( $("select option[value='+currID+']").attr('selected','selected'));
然而,这仍然是一个问题,因为您设置了attr
而不是getting it. Use
prop`方法而不是它将重新调整布尔值
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)