2012-11-22 66 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

相關問題