jlhasson
jlhasson

Reputation: 2286

How to show an entire div on select

I need some help displaying a div with a form inside of it whenever someone selects a certain option from a tag. My code is this:

    <script type="text/javascript">
        $(function() {
            $('#contactOptionSelect').change(function() {
                    $('.emailForm').hide();
                    $('#' + $(this).val()).show();
                });
            });

    </script>
        <div class="contactSelect" id="contactOptionSelect">
            <label for="selectContact">Contact us: </label>
            <select name="selectContact" class="selectContactType" style="width: 150px;"/>
                <option class="opt" value="">Please select</option>
                <option class="opt" id="helpOpt" value="">Help and Support</option>
                <option class="opt" id="emailOpt" value="">Email</option>
                <option class="opt" id="visitOpt" value="">Visit us!</option>
                <option class="opt" id="phoneOpt" value="">Phone</option>
            </select>
        </div>      
        <div class="emailForm" id="emailFormId">
            <form id="contactUsForm" method="post" action="">
                <div class="formSubject">
                    <label for="inputSubject">Subject</label>
                    <input type="text" width="50px" id="inputSubject" />
                </div>
                <div class="formBody">
                    <label for="inputBody">Email</label>
                    <textarea rows="15" cols="50" id="inputBody"></textarea>
                </div>
                <div class="formSubmit">
                    <input type="submit" id="inputSubmit" value="Send!"/>
                </div>
            </form>
        </div>

And I want to display the last form when the email option is selected. I kinda want it to work like this: http://www.apple.com/privacy/contact/ High standards I know but whatever haha Thanks in advance for any help!

Upvotes: 4

Views: 148

Answers (1)

Sampson
Sampson

Reputation: 268324

Are you looking for something like this? http://jsbin.com/okakuy/edit#javascript,html

Whenever the select option is changed, we hide whichever div is visible, and show whichever div has the current select value as its id attribute.

$("#parts").on("change", function(o){
  $(".panels")
    .find("> div:visible")
      .slideUp()
    .end()
    .find("#" + o.target.value)
      .slideDown();
});

Coupled with this markup:

<select id="parts">
  <option>foo1</option>
  <option>foo2</option>
  <option>foo3</option>
</select>
<div class="panels">
  <div id="foo1">This is foo1</div>
  <div id="foo2">This is foo2</div>
  <div id="foo3">This is foo3</div>
</div>

Upvotes: 1

Related Questions