Formulários HTML: Problemas com campos desabilitados?
Que desenvolvedor web nunca teve problemas com os campos desabilitados não irem no request?!? Pois é. Tivemos muito aqui! Foi aí que tive a idéia deste maravilhoso JavaScript que resolve o problema.
Parte 2: Código JavaScript
Aqui temos o maravilhoso JS:
function arrumarCampoDesabilitado(node) {
var tipo = node.getAttribute("type");
if(tipo == "radio" && !node.checked) return;
var nome = node.getAttribute("name");
var val = node.value;
if(tipo == "checkbox") val = (node.checked) ? "on" : "";
node.setAttribute("name", nome+"H");
var novoCampo = document.createElement('input');
novoCampo.setAttribute('type', 'hidden');
novoCampo.setAttribute('name', nome);
novoCampo.setAttribute('value', val);
node.parentNode.appendChild(novoCampo);
}
function procuraDesabilitados(node) {
if(node!=null) {
if(((node.nodeName == "INPUT" && node.getAttribute("type")!="button") || node.nodeName == "SELECT") && node.disabled) {
arrumarCampoDesabilitado(node);
}
if(node.hasChildNodes())
for(var j=0; j<node.childNodes.length; j++)
procuraDesabilitados(node.childNodes[j]);
}
}
var tipo = node.getAttribute("type");
if(tipo == "radio" && !node.checked) return;
var nome = node.getAttribute("name");
var val = node.value;
if(tipo == "checkbox") val = (node.checked) ? "on" : "";
node.setAttribute("name", nome+"H");
var novoCampo = document.createElement('input');
novoCampo.setAttribute('type', 'hidden');
novoCampo.setAttribute('name', nome);
novoCampo.setAttribute('value', val);
node.parentNode.appendChild(novoCampo);
}
function procuraDesabilitados(node) {
if(node!=null) {
if(((node.nodeName == "INPUT" && node.getAttribute("type")!="button") || node.nodeName == "SELECT") && node.disabled) {
arrumarCampoDesabilitado(node);
}
if(node.hasChildNodes())
for(var j=0; j<node.childNodes.length; j++)
procuraDesabilitados(node.childNodes[j]);
}
}