style - jquery name attribute
¿Cómo modifico los datos de formularios serializados en jQuery? (2)
Aquí hay un plugin jquery completo basado en la respuesta de @TJ. Puedes llamar
$(''form#myForm'').awesomeFormSerializer({
foo: ''bar'',
})
Lo cual reemplazará o agregará el parámetro ''foo'' con el valor ''bar'' (o cualquier otro parámetro que agregue en el objeto)
plugin jQuery:
// Not builtin http://stackoverflow.com/a/5075798/2832282
(function ( $ ) {
// Pass an object of key/vals to override
$.fn.awesomeFormSerializer = function(overrides) {
// Get the parameters as an array
var newParams = this.serializeArray();
for(var key in overrides) {
var newVal = overrides[key]
// Find and replace `content` if there
for (index = 0; index < newParams.length; ++index) {
if (newParams[index].name == key) {
newParams[index].value = newVal;
break;
}
}
// Add it if it wasn''t there
if (index >= newParams.length) {
newParams.push({
name: key,
value: newVal
});
}
}
// Convert to URL-encoded string
return $.param(newParams);
}
}( jQuery ));
Estoy tratando de enviar mi formulario en AJAX, así que tengo que serializar () los datos. Pero estoy usando fckEditor
y jQuery no sabe cómo manejarlo, así que después de la serialización, estoy tratando de modificar el valor manualmente, pero hasta ahora no tengo suerte ... cualquier idea
if(content_val!=""){
var values = $("#frmblog").serialize();
values.content = content_val; //content_val is the manually fetched data which I am trying to insert into the serialized content.
alert(content_val); alert(values);
}
serialize
devuelve una cadena con codificación URL que contiene los campos del formulario. Si necesita anexarlo, hágalo usando las reglas de cadena codificadas por URL estándar, por ejemplo:
var values = $("#frmblog").serialize();
values += "&content=" + encodeURIComponent(content_val);
(Lo anterior supone que siempre habrá un valor en los values
después de la llamada de serialize
; si eso no es necesariamente cierto, determine si se usa &
función de si los values
están vacíos antes de agregarlos).
Alternativamente, si lo desea, puede usar serializeArray
y luego agregar a la matriz y usar jQuery.param
para convertir el resultado en una cadena de consulta, pero eso parece un largo camino ''redondo:
// You can also do this, but it seems a long way ''round
var values = $("#frmblog").serializeArray();
values.push({
name: "content",
value: content_val
});
values = jQuery.param(values);
Actualización : en un comentario añadido más tarde dijiste:
El problema es que hay algunos valores predeterminados establecidos en la tecla ''contenido'' durante el proceso de serilización, por lo que no puedo adjuntar un nuevo valor, tengo que actualizar el que ya está en él "
Eso cambia las cosas. Me duele buscar content
dentro de la cadena codificada en URL, así que me gustaría ir con la matriz:
var values, index;
// Get the parameters as an array
values = $("#frmblog").serializeArray();
// Find and replace `content` if there
for (index = 0; index < values.length; ++index) {
if (values[index].name == "content") {
values[index].value = content_val;
break;
}
}
// Add it if it wasn''t there
if (index >= values.length) {
values.push({
name: "content",
value: content_val
});
}
// Convert to URL-encoded string
values = jQuery.param(values);
Probablemente quieras hacer de esto una función reutilizable.