javascript - jquery conditional form submit -
i trying update user profile. after user inserts address , submits converts latitude , longitude. created conditional statement: if geocoderstatus ok change geolocationok = 1 else 0. when 1 run update function, latitude , longitude not passed formdata. on second update click added. suggestion how can include latitude , longitude in formdata?
click update
$(document).on("click", "#updateprofile", function (e) { function geocodeaddress(geocoder, resultsmap) { var address = document.getelementbyid('address').value; geocoder.geocode({'address': address}, function(results, status) { if (status === google.maps.geocoderstatus.ok) { var latitude = results[0].geometry.location.lat(); var longitude = results[0].geometry.location.lng(); console.log(latitude); console.log(longitude); userlatitude = document.getelementbyid('citylat').value = latitude; userlongitude = document.getelementbyid('citylng').value = longitude; geolocationok = 1; console.log(geolocationok); } else { alert('geocode not successful following reason: ' + status); } }); } geocodeaddress(geocoder); if(geolocationok == 1){ updateprofile(); }else{ console.log("not ok"); e.preventdefault(); } });
this update function
function updateprofile(){ console.log(geolocationok); $('#rootwizard').formvalidation({ framework: 'bootstrap', excluded: [':disabled'], icon: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, live: 'enabled', framework: 'bootstrap', icon: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' }, fields: { userphonenr: { validators: { notempty: { message: 'please insert phone nr' }, regexp: { regexp: /^[a-za-z0-9_]+$/, message: 'error' } } }, } }).on('success.form.fv', function(e, data) { // prevent form submission e.preventdefault(); var $form = $(e.target), formdata = new formdata(), params = $form.serializearray(), files = $form.find('[name="userprofilephoto"]')[0].files; $.each(params, function(i, val) { formdata.append(val.name, val.value); }); $.ajax({ url: $form.attr('action'), data: formdata, cache: false, contenttype: false, processdata: false, type: 'post', success: function(data){ console.log(data); if(data.status == 'success'){ getprofiledata(); } }, error: function(jqxhr, textstatus, errorthrown, data){ console.log(jqxhr, textstatus, errorthrown, data); } }); // destroy function destroyformvalidation() { var instance = $('#rootwizard').data('formvalidation'); if (instance) { instance.destroy(); } } destroyformvalidation(); }); }
why can update on second click because on first click binding form validation. why not bind form validation separately outside function updateprofile .
and inside updateprofile submit form:
function updateprofile(){ $('#rootwizard').submit(); }
Comments
Post a Comment