2014-01-29 62 views
0

我有一個包含所有用戶名的選擇框。我想通過在選擇框中選擇(全部)選項來在一個地方列出所有用戶。我已經做了以下嘗試如何將屬性設置爲true在jquery中沒有值的選項

查看

= select_tag :user_id, options_from_collection_for_select(User.all, "id", "name", @user.id),:prompt => "(All)", class: "no-padding user_select" 

的js

$(".user_select").on("change", function() { 
if ($(this).val() == "") { 
    window.location = '/users/absences/all'; 
    $(this).attr('selected', true); 
} else { 
    window.location = '/users/' + this.value + '/absences'; 
} 
}); 

當我選擇了所有選項,我正在重定向到正確的頁面,但在選擇框中我不能看到高亮顯示的(ALL)選項。相反,我看到第一個選項的選定屬性爲true。

我想在選擇框中看到(所有)選項,當我點擊它時,像任何其他選項一樣。任何人都可以幫助我這樣做。

+5

您是在變化的事件發送重定向..所以你需要在當前頁面 –

+1

這條線不會執行不處理新頁面的情況下s:「$(this).attr('selected',true)」bcoz你重定向到頁面。 – Arvind

+0

那我該如何處理呢。我應該在哪裏設置attr爲true? –

回答

0

兩件事。

首先,您並未在代碼中的某個選項上設置屬性。你的代碼是在select上設置一個屬性。您需要找到'全部'選項並將其設置爲選中狀態。

其次,正如已經指出的那樣,選擇此選項的JavaScript甚至沒有運行在正確的頁面上。在我看來,每次你去/users/absences/all,你都希望選擇'全部'選項,所以你可以把selected放在html選項中。不需要是JavaScript。

<select id="user_select"> 
    <option value="all" selected>All</option> 
    <option value="1">Jon Doe</option> 
</select> 

但是,如果你確實要選擇使用JavaScript該選項一些奇怪的原因,你可能只是做對DOM準備:

$(function() { 
    $('#user_select option[value=all]').prop('selected', true); 
}); 

或者,如果你不能有一個值「全部」選項,但該選項首先出現:

$(function() { 
    $('#user_select option:first').prop('selected', true); 
}); 
+0

我的榮幸!還要注意我的編輯,'.prop()'方法應該用於'selected'而不是'.attr()' – Samo

相關問題