简体   繁体   中英

I want to hide all the field when page load in jquery

I have an scenario where i show and hide fields based on the selected value from drop down.

Its working perfect but when it's loading first time, at that time it shows all the fields value.

So i want to hide all the value when page load.

 jQuery(document).ready(function($) { $('select[name=mem_type]').change(function() { // hide all optional elements $('.common-subject').hide(); $('.maths-subject').hide(); $('.biology-subject').hide(); $('.pro-member-type').hide(); $("select[name=mem_type] option:selected").each(function() { var value = $(this).val(); if (value == " ") { $('.common-subject').hide(); } else if (value == "Biology") { $('.biology-subject').show(); } else if (value == "Maths") { $('.maths-subject').show(); } }); }); }); 
 <head> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.4.min.js"></script> <div id="reg_mem_type" class="form-row form-row-wide"> <label for="reg_mem_type">Subject Type</label> <select id="reg_mem_type" name="mem_type"> <option value=" "></option> <option value="Biology">Biology</option> <option value="Maths">Maths</option> </select> </div> <div class="common-subject biology-subject form-row form-row-wide"> <h2>Biology</h2> </div> <div class="common-subject biology-subject form-row form-row-wide"> <label for="reg_first_name">Biology</label> <input type="text" class="input-text" name="maths" id="reg_first_name" size="10" /> </div> <div class="common-subject biology-subject form-row form-row-wide"> <label for="reg_last_name">Biology1</label> <input type="text" class=" input-text" name="last_name" id="reg_last_name" size="10" /> </div> <div class="maths-subject common-subject form-row form-row-wide"> <h2>Maths</h2> </div> <div class="common-subject maths-subject form-row form-row-wide"> <label for="reg_website">Maths1</label> <input type="text" class="input-text" name="website" id="reg_website" /> </div> <div class="maths-subject common-subject form-row form-row-wide"> <label for="reg_fax">Maths2</label> <input type="text" class="input-text" name="fax_num" id="reg_fax" /> </div> </head> 

 jQuery(document).ready(function($) { $('select[name=mem_type]').change(function() { // hide all optional elements $('.common-subject').hide(); $('.maths-subject').hide(); $('.biology-subject').hide(); $('.pro-member-type').hide(); $("select[name=mem_type] option:selected").each(function() { var value = $(this).val(); if (value == " ") { $('.common-subject').hide(); } else if (value == "Biology") { $('.biology-subject').show(); } else if (value == "Maths") { $('.maths-subject').show(); } }); }).change();//manually call change event so that on load it run the change event }); 
 <head> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.4.min.js"></script> <div id="reg_mem_type" class="form-row form-row-wide"> <label for="reg_mem_type">Subject Type</label> <select id="reg_mem_type" name="mem_type"> <option value=" "></option> <option value="Biology">Biology</option> <option value="Maths">Maths</option> </select> </div> <div class="common-subject biology-subject form-row form-row-wide"> <h2>Biology</h2> </div> <div class="common-subject biology-subject form-row form-row-wide"> <label for="reg_first_name">Biology</label> <input type="text" class="input-text" name="maths" id="reg_first_name" size="10" /> </div> <div class="common-subject biology-subject form-row form-row-wide"> <label for="reg_last_name">Biology1</label> <input type="text" class=" input-text" name="last_name" id="reg_last_name" size="10" /> </div> <div class="maths-subject common-subject form-row form-row-wide"> <h2>Maths</h2> </div> <div class="common-subject maths-subject form-row form-row-wide"> <label for="reg_website">Maths1</label> <input type="text" class="input-text" name="website" id="reg_website" /> </div> <div class="maths-subject common-subject form-row form-row-wide"> <label for="reg_fax">Maths2</label> <input type="text" class="input-text" name="fax_num" id="reg_fax" /> </div> </head> 

Call .change()

just trigger change event on page load:

 $('select[name=mem_type]').change(function() { // hide all optional elements $('.common-subject').hide(); $('.maths-subject').hide(); $('.biology-subject').hide(); $('.pro-member-type').hide(); $("select[name=mem_type] option:selected").each(function() { var value = $(this).val(); if (value == " ") { $('.common-subject').hide(); } else if (value == "Biology") { $('.biology-subject').show(); } else if (value == "Maths") { $('.maths-subject').show(); } }); }); $('select[name=mem_type]').change(); // just trigger change event here 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id="reg_mem_type" class="form-row form-row-wide"> <label for="reg_mem_type">Subject Type</label> <select id="reg_mem_type" name="mem_type"> <option value=" "></option> <option value="Biology">Biology</option> <option value="Maths">Maths</option> </select> </div> <div class="common-subject biology-subject form-row form-row-wide"> <h2>Biology</h2> </div> <div class="common-subject biology-subject form-row form-row-wide"> <label for="reg_first_name">Biology</label> <input type="text" class="input-text" name="maths" id="reg_first_name" size="10" /> </div> <div class="common-subject biology-subject form-row form-row-wide"> <label for="reg_last_name">Biology1</label> <input type="text" class=" input-text" name="last_name" id="reg_last_name" size="10" /> </div> <div class="maths-subject common-subject form-row form-row-wide"> <h2>Maths</h2> </div> <div class="common-subject maths-subject form-row form-row-wide"> <label for="reg_website">Maths1</label> <input type="text" class="input-text" name="website" id="reg_website" /> </div> <div class="maths-subject common-subject form-row form-row-wide"> <label for="reg_fax">Maths2</label> <input type="text" class="input-text" name="fax_num" id="reg_fax" /> </div> 

Just add this to your code :

    <style>
    .common-subject{
       display:none;
    }
    </style>

And the rest of you code will work fine then.

您还可以触发变更事件

$('select[name=mem_type]').trigger('change');

只需将此行作为更改事件功能之前的就绪功能的第一行

$('.common-subject').hide();

All you need to do is to set a class in your css for instance .dNone{display:none} and then add this class to the fields or elements you want to hide.

Once you select something from you drop down menu just remove .dNone from those elements :)

Try this code

  jQuery(document).ready(function($){ $('.common-subject').hide(); $('.maths-subject').hide(); $('.biology-subject').hide(); $('.pro-member-type').hide(); $('select[name=mem_type]').change(function () { // hide all optional elements $('.common-subject').hide(); $('.maths-subject').hide(); $('.biology-subject').hide(); $('.pro-member-type').hide(); $("select[name=mem_type] option:selected").each(function () { var value = $(this).val(); if(value == " ") { $('.common-subject').hide(); } else if(value == "Biology") { $('.biology-subject').show(); } else if(value == "Maths") { $('.maths-subject').show(); } }); }); }); 
 <head> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.4.min.js"></script> <div id="reg_mem_type" class="form-row form-row-wide"> <label for="reg_mem_type">Subject Type </label> <select id="reg_mem_type" name="mem_type"> <option value=" "> </option> <option value="Biology">Biology</option> <option value="Maths">Maths</option> </select> </div> <div class="common-subject biology-subject form-row form-row-wide"> <h2>Biology</h2></div> <div class="common-subject biology-subject form-row form-row-wide"> <label for="reg_first_name">Biology</label> <input type="text" class="input-text" name="maths" id="reg_first_name" size="10"/> </div> <div class="common-subject biology-subject form-row form-row-wide"> <label for="reg_last_name">Biology1</label> <input type="text" class=" input-text" name="last_name" id="reg_last_name" size="10"/> </div> <div class="maths-subject common-subject form-row form-row-wide"> <h2>Maths</h2> </div> <div class="common-subject maths-subject form-row form-row-wide"> <label for="reg_website">Maths1</label> <input type="text" class="input-text" name="website" id="reg_website"/> </div> <div class="maths-subject common-subject form-row form-row-wide"> <label for="reg_fax">Maths2</label> <input type="text" class="input-text" name="fax_num" id="reg_fax"/> </div> </head> 

better wrap all your html in one parent div and give a class say( parent_class ). and then give css to that class

display:none;

Then on window load show that class

$(window).load(function(){

$(".parent_class").show();

})

Put elements you want to hide on load event instead of putting it inside change event. So that on load it will hide all optional elements, then on change event show the elements you want.

jQuery(document).ready(function($) {

   // hide all optional elements
    $('.common-subject').hide();
    $('.maths-subject').hide();
    $('.biology-subject').hide();
    $('.pro-member-type').hide();

  // Now the change event.
   $("select[name=mem_type] option:selected").each(function() {
       var value = $(this).val();
       if (value == " ") {
          $('.common-subject').hide();
       } 
       else if (value == "Biology") {
          $('.biology-subject').show();
       } else if (value == "Maths") {
          $('.maths-subject').show();
       }
   });
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM