jquery - s:checkbox fieldValue always true in validation before submitting -
i using struts 2 <s:checkbox /> in form processing, along angularjs , jquery.
before submitting, need validation , until in project:
when press submit button, function called:
$scope.processform('myform', '<s:url value="/form/validate.action" />', '<s:url value="/form/save.action" />'); , processform(formid, validateurl, submiturl) function defined us:
$scope.processform = function(form, validateurl, submiturl) { window.scroll(0,0); proccessformservice.processstandarform(form, validateurl, submiturl); }; and furthermore, have processstandarform() defined in global service:
angular.module('ourapp').controller('myformctrl', function($scope, $modal, proccessformservice) { ... } in service:
(function() { angular.module('ourapp').factory('proccessformservice', ['$http', function($http) { processstandarform: function(form, validateurl, submiturl) { this.processform(form, validateurl, submiturl); }, processform: function(form, validateurl, submiturl, success) { if ((typeof form) == 'string') { form = document.getelementbyid(form); } var data = this.form2object(form); var ctrl = this; if (data) { if (validateurl) { $http({ method : 'post', url : validateurl, data : $.param(data), // pass in data strings headers : { 'content-type': 'application/x-www-form-urlencoded' } // set headers angular passing info form data (not request payload) }).success(function() { if (!success) { form.action = submiturl; form.submit(); } else { ctrl.submitajaxform(submiturl, data, success) } }); } else if (submiturl) { if (!success) { form.action = submiturl; form.submit(); } else { this.submitajaxform(submiturl, data, success) } } } }, } basically, submitting twice form, firstly validation, submitting.
what don't understand, if debug in action class, in function of validate(), boolean value of <s:checkbox /> true, in submit() function, boolean values submitted correctly, according checked/not checked. checkboxs this:
<div class="col-sm-12 form-checkbox"> <s:checkbox name = "myform.married" ng-model = "checkboxmodel" value = "<s:property value='%{myform.married}'/>" ng-change = "submitcheckbox();" ng-init = "checkboxmodel= %{myform.married}" theme = "simple" ng-disabled = "anotherfunction()" /> </div> i understand that, value submitted fieldvalue="xxx" in <s:checkbox />, , default true. did change fieldvalue of every checkbox before page loaded. although script executed, nothing changed. still true in validation.
$(document).ready(function(){ $( "input:checkbox" ).each(function(){ var checkbox = $(this); var checked = checkbox.prop("checked");//sera false/true if (checked == true){ checkbox.prop("fieldvalue", "true"); } else { checkbox.prop("fieldvalue", "false"); } }); }); so, how can right boolean values not in submitting, in validation?? angular service wrongly written ? doubt not able figure out question.
suspected data not serialized used angular $http().
if want emulate $.param() used in jquery should use built-in serializer $httpparamserializerjqlike.
alternative
$httpparams serializer follows jquery'sparam()method logic. serializer sort params alphabetically.to use serializing
$httprequest parameters, setparamserializerproperty:$http({ url: myurl, method: 'get', params: myparams, paramserializer: '$httpparamserializerjqlike' });it possible set default
paramserializer in$httpprovider.additionally, can inject serializer , use explicitly, example serialize form data submission:
.controller(function($http, $httpparamserializerjqlike) { //... $http({ url: myurl, method: 'post', data: $httpparamserializerjqlike(mydata), headers: { 'content-type': 'application/x-www-form-urlencoded' } }); });
another ways convert $.param angular can find in convert $.param in angularjs
Comments
Post a Comment