Ho letto parecchi metodi diversi per far sì che le checkbox html vengano postate sul server, ma sto davvero cercando di farlo senza modificare nulla tranne $ .serialize. Idealmente, vorrei che le caselle spuntate fossero pubblicate come on e deselezionate per essere pubblicate come 0, vuote o null.come sostituire la casella .serialize di jquery per includere caselle di controllo deselezionate
Sono un po 'confuso dal funzionamento interno di jquery, ma finora ho ottenuto questo risultato, ma imposta le caselle di controllo deselezionate su "on" ... Qualcuno può dirmi come continuare questa modifica di seguito?
$.fn.extend({
serializeArray: function() {
return this.map(function(){
return this.elements ? jQuery.makeArray(this.elements) : this;
})
.filter(function(){
return this.name && !this.disabled &&
(this.checked || !this.checked || rselectTextarea.test(this.nodeName) || rinput.test(this.type));
})
.map(function(i, elem){
var val = jQuery(this).val();
return val == null ?
null :
jQuery.isArray(val) ?
jQuery.map(val, function(val, i){
return { name: elem.name, value: val.replace(/\r?\n/g, "\r\n") };
}) :
{ name: elem.name, value: val.replace(/\r?\n/g, "\r\n") };
}).get();
}
});
Ha funzionato quasi perfettamente. Ho appena cambiato jQuery (this) .chiaccato a jQuery (this) .prop ('checked') e ha funzionato alla grande. Grazie! – Jonathon
@ user975571 o semplicemente usare 'this.checked' invece di' jQuery (this) .prop ('checked') ' –
per qualche motivo che non ha funzionato, ma alla fine ha funzionato: jQuery (this) .prop ('type') == 'checkbox' – Jonathon