2015-10-08 3 views
0

Я использую Rails 3.1, и я представляю форму. У меня есть дополнительное поле, которое я хочу видеть только, если пользователь выбирает «Другое» в поле выбора. В настоящее время я показываю дополнительное поле, когда выбрано другое, но если пользователь сохраняет свой выбор при перезагрузке страницы, он снова не загружает дополнительное поле, даже если поле выбора - другое.Скрыть поле, основанное на значении окна выбора

Here is the jQuery

$(document).ready(function() { 
    $('#user_gender_custom').hide(); 
    $("#user_gender").change(function() { 
     if ($("#user_gender").val() == "custom") $("#user_gender_custom").show(); 
     else $("#user_gender_custom").hide(); 
    }); 
}); 

Если удалить первоначальный $('#user_gender_custom').hide(); он всегда загружает дополнительное поле на странице загрузки, даже если выбрать значение поле не Другое.

Может ли кто-нибудь показать мне, как правильно это сделать? Помощь будет очень оценена.

+0

, попробуйте '$ (" # user_gender option: selected "). Val() ==" custom "' – guradio

+0

@Pekka Я пробовал это в инструкции if, и это не так покажите дополнительное поле при загрузке страницы, если значение установлено на 'custom'. – DMH

+0

вы должны вызвать изменение вручную. добавьте $ ("# user_gender"). change(); после изменения – guradio

ответ

1

Если проблема только начальная нагрузка (поле всегда показано), может быть, имеет смысл сделать что-то вроде этого:

function toggle_custom() { 
    if ($("#user_gender").val()=="custom") 
    $("#user_gender_custom").show(); 
    else 
    $("#user_gender_custom").hide(); 
} 

$(function() { 
    toggle_custom(); 
    $("#user_gender").change(function() { 
    toggle_custom(); 
    }); 
}); 
+0

Я пробовал, что @ the-ancient, но на странице загружается значение по умолчанию, это флажок 'select one ', а дополнительное поле отображается, даже если значение не' custom' – DMH

+0

Это может быть так, как выглядит синтаксис неверно Я вижу это в консоли 'Uncaught SyntaxError: missing) после списка аргументов' – DMH

+1

@DMH - я отредактировал код, чтобы исправить это; в предпоследней строке отсутствовал «)». – Chowlett

0

$(document).ready(function() { 
 
    $("#user_gender").val("custom") 
 
    $('#user_gender_custom').hide(); 
 
    
 
    $("#user_gender").change(function() { 
 
     if ($("#user_gender option:selected").val() == "custom") $("#user_gender_custom").show(); 
 
     else $("#user_gender_custom").hide(); 
 
    }); 
 
    $("#user_gender").change(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select id='user_gender'> 
 
    <option val=''></option> 
 
    <option val=''>custom11</option> 
 
<option val='custom'>custom</option> 
 

 
</select> 
 
<input type='text' id='user_gender_custom'/>

Пожалуйста, добавьте на изменения вручную. Чтобы функция изменения была вызвана при загрузке

+0

Единственная проблема с этим - сказать, что вы пришли, чтобы заполнить форму в первый раз, когда значение по умолчанию установлено на custom, когда оно должно быть приглашение выбрать его. – DMH

+0

И скажите, что на самом деле он установлен для мужчины, тогда он всегда будет настроен на обычай, когда кто-то перейдет к его редактированию. – DMH

+0

Нет, вам не нужно вручную устанавливать значение. Я просто покажу вам, что если есть значение в select, событие изменения должно быть вызвано так, что важная вещь находится на нагрузке, вы должны вызвать событие изменения, в котором изменяется значение select или нет. вход будет скрываться или показывать в зависимости от значения select – guradio

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