jQuery on change issue -


hello have following code (html + jquery):

<!doctype html> <html>     <head>         <title></title>         <meta charset="utf-8">         <meta name="viewport" content="width=device-width, initial-scale=1.0">         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>         <script>             $(document).ready(function(){                 $("#btn_csv, #btn_xls").hide();                 $('#filetype').on('change', function() {                     var selecteditem = $('#filetype option:selected').index();                            if(selecteditem === 1){                         $('#btn_xls').hide();                         $('#btn_csv').show();                     }else if(selecteditem === 2){                         $('#btn_xls').show();                         $('#btn_csv').hide();                     }                 });                 $("#selector").on('click', function() {                     $('#filetype').val("csv");                 });             });         </script>     </head>     <body>         <div>             <button id="selector">select csv</button>             <select id="filetype" >                 <option value="default" disabled="disabled" selected="selected">--select option--</option>                 <option value="csv">csv</option>                 <option value="xls">xls</option>             </select>             <button id="btn_csv">csv</button>             <button id="btn_xls">xls</button>         </div>     </body> </html> 

if select "csv" dropdown button labeled "csv" apear, on('change') jquery event works, if click on select csv button after page loaded csv option in dropdown selected csv button not apear. how can make on(change) event work dropdown on "select csv" button click too?

thanks.

it's quite simple — trigger change event manually after have set value, i.e.:

$('#filetype').val("csv").trigger("change"); 

the reason why change event not fire when manipulate value .val() because event triggered user interaction — not programatically. therefore, value change js not recognized change event (in other words, change event not fired). necessites using .trigger() fire event manually ;)

see working snippet below:

$(document).ready(function() {    $("#btn_csv, #btn_xls").hide();    $('#filetype').on('change', function() {      var selecteditem = $('#filetype option:selected').index();      if (selecteditem === 1) {        $('#btn_xls').hide();        $('#btn_csv').show();      } else if (selecteditem === 2) {        $('#btn_xls').show();        $('#btn_csv').hide();      }    });    $("#selector").on('click', function() {      $('#filetype').val("csv").trigger("change");    });  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <div>    <button id="selector">select csv</button>    <select id="filetype">      <option value="default" disabled="disabled" selected="selected">--select option--</option>      <option value="csv">csv</option>      <option value="xls">xls</option>    </select>    <button id="btn_csv">csv</button>    <button id="btn_xls">xls</button>  </div>


Comments

Popular posts from this blog

cakephp - simple blog with croogo -

How to group boxplot outliers in gnuplot -

bash - Performing variable substitution in a string -