Показывать (видимый / скрытый, НЕ показывать / скрывать) HTML-элемент на основе выделения поля выбора формы

#javascript #forms #hidden #visible #drop-down-menu

#javascript #формы #скрытый #видимый #выпадающее меню

Вопрос:

Следующее отлично сработало для моих нужд. Взял состояние флажка и сделал замечательные вещи для меня; Сделал видимыми 3 разных элемента формы (по сравнению с показом / скрытием) на основе флажка, установленного или не установленного. Я думаю, просто. Опять же, я основываю «простой» на том, насколько симметрично выглядит код, и если он меньше 10 строк. В остальном я заблудился. Тем не менее, я официально отказался от возни с проблемой границы флажка IE и выравниванием X-браузера yippeedoodles. Я хочу, чтобы пиксель был идеальным сложным способом. Но я проиграл эту битву. Но вместо того, чтобы вдаваться в какие-либо обсуждения по этому поводу, мне нужно выполнить то же самое, используя поле выбора формы, что я смог сделать с помощью флажков (ниже):

 <form id="form">
<input id="checkbox" name="checkbox" type="checkbox" onclick="showhideid" />
</form>



#IdOne, #IdTwo, #IdThree (visibility:hidden;}


function showhideid()
{
    if (document.form.checkbox.checked)
    {   
        document.getElementById("IdOne").style.visibility = "visible";
        document.getElementById("IdTwo").style.visibility = "visible";
        document.getElementById("IdThree").style.visibility = "visible";
        document.getElementById("IdFour").setAttribute("class", "required");

    }
    else
    {
        document.getElementById("IdOne").style.visibility = "hidden";
        document.getElementById("IdTwo").style.visibility = "hidden";
        document.getElementById("IdThree").style.visibility = "hidden";   
        document.getElementById("IdFour").setAttribute("class", "");
    }
}
  

Теперь, если я смогу выполнить то же самое, используя поле выбора (ниже), я умру счастливым человеком.

Это все, что я понял. У меня очень кружится голова от чтения справочных страниц Jquery / CSS, и я просто не могу собрать все это воедино.

 <html>

<form id="form">

<select name="SelectBox">
<option>Make a Choice</option>
<option value="Value1">Selection1</option>
<option value="Value2">Selection2</option>
<option value="Value3">Selection3</option>
</select>

<label id="IdOne" for="input1">MeAndMyInputAreInvisibleByDesign</label>
<input id="IdTwo" name="input1" type="text">

<span id="IdThree">Im Not In display:none Mode I'm In visibility:hidden Mode. Big difference."
</span>

<input id="IdFour" name="input2" type="text" class="I have none, but I will soon. I hope" />

</form>

</html>
  

Ответ №1:

взгляните на select тег:

 <select name="SelectBox">
<option>Make a Choice</option>
<option value="IdTwo">Selection1</option> <!-- the value should be the id of the input field -->
<option value="IdThree">Selection2</option>
<option value="IdFour">Selection3</option>
</select>
  

Теперь вы должны присвоить класс селектора каждому элементу, который вы хотите показать / скрыть:

 <input id="IdTwo" name="input1" type="text" class="toggle">
<span id="IdThree" class="toggle">
   Im Not In display:none Mode I'm In visibility:hidden Mode. Big difference."
</span>
<input id="IdFour" name="input2" type="text" class="toggle" />
  

Теперь посмотрим на javascript:

 jQuery(document).ready(function(){
 jQuery('input[name="SelectBox"]').change(function(){
  jQuery('.toggle').css({"visibility":"hidden"});//Hide all
  jQuery("#"   jQuery(this).val()).css({"visibility":"visible"});
 });
});
  

Комментарии:

1. Да, первый, приведенный ниже, сработал после того, как я вставил ссылку Jquery в HTML. Этот делал что-то другое? Я заметил несколько изменений синтаксиса и пару дополнений. .toggle просто сообщает x, чтобы он просто менял состояния, как следует из этого слова? Эта простая вещь, которую я опубликовал выше, кажется днем и ночью. Было прямолинейно. Я не знаком ни с какими зарезервированными словами, соглашениями и т.д. JS для меня в буквальном смысле совершенно новый. Но мне нравится то, что он, казалось бы, может делать. Проблема в том, что я не знаю, с чего начать, для чего мне это нужно. 🙂

2. @adg Да, класс toggle предназначен только для использования в качестве селектора. Это может быть что угодно вроде «xyz». Я просто попытался сделать код более понятным. Ничего не изменилось как таковое.

Ответ №2:

Вы можете сделать что-то вроде этого:

 <html>

<form id="form">
<input type="text" id="IdOne" class="toggle" />
<input type="text" id="IdTwo" class="toggle" />
<input type="text" id="IdThree" class="toggle" />
<select name="SelectBox" id="selectBox">
<option value="0">Make a Choice</option>
<option value="IdOne">First element</option>
<option value="IdTwo">Second element</option>
<option value="IdThree">Third element</option>
</select>

</html>
  

это в javascript:

 jQuery(document).ready(function(){
 jQuery("#selectBox").change(function(){
  jQuery(".toggle").hide();
  jQuery("#"   jQuery(this).val()).show();
 });
});
  

Комментарии:

1. На самом деле, я не уверен, что это делает. В любом случае, прочитав свой собственный «заголовок», я понял, что вставил туда «Jquery». Jquery не является necc. Я уверен, что подойдет любой Jscript. Я читал кое-что, что, на мой взгляд, я назвал JaveScript = Jquery. Как салфетки для салфеток. Мои извинения.

2. Скрыть / показать приведет к разрыву формы, поэтому мне нужен метод Visible / Hidden. Я просто не знаком с тем, как применить это к полям выбора формы HTML.

3. Хорошо, в этом случае вы можете заменить show() на css({"visibility":"visible"}) и hide() на css({"visibility":"hidden"})

4. Ошибка у меня. Смотрю на это. Исчерпан.

5. Теперь спрашиваю, был ли подключен плагин. 🙂 Я не загружал Jquery. В любом случае, большое спасибо за это. Мне придется поиграть с этим и посмотреть, смогу ли я придумать способ изменить тип класса И видимость одновременно. Кроме того, есть ли способ сделать это без необходимости загружать Jquery. Приведенный выше Javascript не полагался на это. Кажется немного излишним. Но я понятия не имею, потому что я работаю с Javascript уже второй час. Никогда к нему не прикасался.