javascript - how to detect form feild change live to show or hide submit button -


my form below:

<form id="myform">     <fieldset>         <div class="row-fluid">             <label class="checkbox"><input type="checkbox" id="status" name="status">active</label>         </div>         <div class="row-fluid">             <label>address</label>             <input type="text" id="city" name="city" />             <input type="text" id="state" name="state" />         </div>         <a id="save" class="btn btn-primary hide">save changes</a>         <a id="close" class="btn">close</a>     </fieldset> </form> 

my form appear pre-populated. status checked, name has value anyname, city has value anycity, , state has value anystate. basically, save changes form hidden when form appears. but, if user click on of field, append character or remove character, should detect changes live set save changes button show i.e. remove class hide. if again, appended character removed , set original, should again hide save change button.

basically detect form field change live , hide or show button live.

i had @ couple of question related none of them fulfilled requirement.

i tried

 $('myform:input, myform:checkbox').change(function() {       $("#save").removeclass("hide"); }); 

since need compare original value against current value, you'd have store original values somewhere.

as pointed out in comments cbroe, can original values of each element using defaultvalue or defaultchecked:

the following checks each input see whether or not value has changed, , returns length (number) of elements have. can use show/hide save button.

var $inputs = $('#myform :input'); $inputs.on('keyup change', function() {    var datachanged = $inputs.filter(function() {     if ($(this).is(':checkbox')) {       var originalvalue = this.defaultchecked;       var currentvalue = this.checked;     } else {       var originalvalue = this.defaultvalue;       var currentvalue = this.value;     }     return originalvalue != currentvalue;   }).length;        if (datachanged == 0) {     $('#save').addclass('hide')    } else {      $('#save').removeclass('hide');   }  }); 

notice how i've attached keyup() event change() event. trigger function text inputs when key pressed, , hide or show save button immediately.

here's fiddle


Comments

Popular posts from this blog

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -

node.js - Bad Request - node js ajax post -