2014-01-29 3 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'; 
} 
}); 

Когда я выбрать все опции я перенаправлены на нужную страницу, но в поле выбора я cant см. параметр (ALL). Вместо этого я вижу первый вариант с выбранным атрибутом true.

Я хочу, чтобы в поле выбора была выбрана опция (Все), когда я нажимаю на нее, как и любой другой вариант. Может ли кто-нибудь помочь мне в этом.

+5

вы отправляете редирект на событии изменения .. так что вам нужно обрабатывать случай новой страницы не на текущей странице –

+1

эта линия никогда не выполнится s: "$ (this) .attr ('selected', true)" bcoz ur перенаправляется на страницу. – Arvind

+0

Тогда как я справляюсь с этим. где я должен установить attr в true? –

ответ

0

Две вещи.

Во-первых, вы не устанавливаете атрибут для параметра в своем коде. Ваш код устанавливает атрибут для выбора. Вам нужно найти опцию «Все» и установить ее для выбора.

Во-вторых, как уже указывалось, JavaScript, который выбирает эту опцию, даже не работает на правой странице. Мне кажется, что каждый раз, когда вы идете в /users/absences/all, вам нужно выбрать опцию «Все», поэтому вы можете просто поместить selected в параметр html. Не нужно быть JavaScript.

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

Но если вы DID хотите выбрать этот вариант с JavaScript для какой-то странной причине, вы можете просто сделать это на DOM готовы:

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

Или, если вы не можете иметь значение в ваш «Все» вариант, но эта опция появляется первым:

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

Мое удовольствие! Также обратите внимание на мое редактирование, метод '.prop()' должен использоваться для 'selected', а не' .attr() ' – Samo

Смежные вопросы