2010-05-18 10 views
11

Tengo un formulario donde el usuario puede ingresar un enlace, hacer clic en el botón "agregar enlace" y ese enlace se agrega (vía jQuery) al formulario como un campo oculto. El problema es que no está PUBLICANDO cuando envío el formulario. Realmente está empezando a confundirme. El problema es que si codigo un campo oculto en el formulario, se publica, pero mi función no funciona por alguna razón. El campo oculto se agrega a mi formulario como puedo ver con Firebug pero simplemente no se envía con los datos POST.HTML Form HIdden Campos agregados con Javascript no POSTing

Solo para observar, estoy usando una matriz en Javascript para contener los elementos hasta que se envíe el formulario que también los publica visiblemente para que el usuario vea lo que han agregado. Estoy usando notación [] en el campo "nombre" del elemento porque quiero que los enlaces se introduzcan en una matriz en PHP.

Aquí es la creación de enlace que está anexado a mi forma:

 function make_hidden_element_tag(item_type, item_content, item_id) 
{ 
    return '<input type="hidden" name="' + item_type + '[]" id="hidden_link_' + item_id + '" value="' + item_content + '"/>'; 

¿Alguien tiene una idea de por qué esto podría no ser la publicación. Como se indicó anteriormente, cualquier etiqueta codificada que sea casi idéntica a la anterior funciona bien, solo que esta etiqueta no funciona. Así es como estoy añadiendo la etiqueta al formulario con jQuery:

$('#link_td').append(make_hidden_element_tag('links', link, link_array.length - 1)); 

estoy usando el marco Kohana 3, aunque no estoy seguro de que tiene algo que ver con esto porque no está haciendo nada de el momento en que se agrega el HTML a la página y se presiona el botón Enviar.

Respuesta

2

Acabo de descubrir cuál era el problema. Estoy avergonzado y confundido. Como dije, estoy usando Kohana Framework. No estoy seguro de que tenga algo que ver con esto, pero podría ser importante.

que tenía mis elementos en este orden:

<table> 
    <form> 
     .............form stuff....... 
    </form> 
</table> 

y no permitía que mis datos añadidos a unirse a la matriz POST cuando se envía el formulario, a pesar de que los elementos que fueron "duro codificado" por medio de la forma de Kohana la clase estaba funcionando bien. Me di cuenta de que venía antes de toda la sucursal. Miré para asegurarme de tener un Form :: close en mi vista de Kohana, pero nunca imaginé que se estaba cerrando directamente después de la etiqueta de apertura.

Muchas gracias por la ayuda. Este es uno de esos errores que simplemente no tienen sentido, pero supongo que tiene sentido por qué el $ .append no funcionaba antes. Siempre busqué y vi que se agregaba directamente al lado de las otras etiquetas que se enviaban con los datos de POST, por lo que asumí que todo esto estaba sucediendo dentro de la FORMA.

¿Alguien puede explicar por qué la necesidad de encapsular el en lugar de viceversa para que HTML lo represente correctamente? ¿O es más probable que esto sea un problema de Kohana?

Muchas gracias por la ayuda de todos, esta fue una buena lección (pero extremadamente frustrante).

+1

Bueno, yo personalmente tendría la tabla dentro del elemento de formulario en lugar de la forma actual (formulario dentro de la tabla), de modo que cualquier entrada/selección/área de texto que agregue dentro de la tabla se agregue automáticamente al formulario. ................ Vea mi último comentario formulando la pregunta específica: ¿el elemento #link_td está dentro del elemento de formulario? :) –

+0

@master, está/estaba en la tabla y dentro del formulario ... el formulario se cerró directamente ANTES de la etiqueta, así que no vi ningún problema con eso realmente. No estoy seguro de por qué sería importante ya que la tabla fue seguida inmediatamente por la apertura de la etiqueta del formulario y la etiqueta de cierre del formulario seguida inmediatamente por la etiqueta de cierre de la tabla. No estoy seguro de entender cuál fue el problema. – dscher

+0

Importa. Solo para asegurarse de que las personas que siguen lean esto. – mplungjan

2

estimado use el complemento de jquery para agregar elementos html dom dinámicamente, ¿qué es #link_td ??

+0

#link_td es una celda de tabla donde oculto los enlaces ocultos. .¿adjuntar? - si hay otro complemento jQuery que se necesita para agregar elementos HTML, no lo sé ... y prefiero no usarlo. Esto no es ciencia espacial realmente, es bastante básico, creo. – dscher

+0

sí, esto no es realmente una ciencia de cohetes, está agregando el '' cadena en lugar de crear el dom a través de jquery/javascript – Chirag

+0

jQuery es lo suficientemente inteligente como para agregar el nodo – CurtainDog

5

Si los datos no se publican en el servidor, definitivamente no se agrega el elemento de entrada al formulario.

intente ejecutar el siguiente fragmento de código antes formulario de presentación:

<form onsubmit="return doBeforeSubmit(this);"> ... </form> 

Y la función es ...

function doBeforeSubmit(form) 
{ 
    var es = form.elements; 
    var l = es.length; 

    var msgs = []; 

    for(var idx = 0; idx < l; idx++) 
    { 
     var e = es[idx]; 
     msgs.push('name=' + e.name + ', type=' + e.type + ', value=' + e.value; 
    } 

    alert(msgs.join('\n')); 
    return false; 
} 

Si usted no recibe su campo, entonces la "entrada" no se agrega a la forma sino a otro lugar.

Si obtiene el campo ... tendremos que cavar más profundo.

+1

Del mismo modo, vale la pena conocer y adorar el panel Net Firebug. – CurtainDog

+1

@master y @curtaindog, ya estoy usando Firebug Net Panel y realmente me encanta. Lamentablemente, mis datos no están en los datos POST que se envían al servidor cuando se envía el formulario. Como se indicó anteriormente, el elemento oculto que deseo agregar se agrega a mi documento exactamente donde yo quiero cuando ejecuto mi función javascript ... simplemente no termina en los datos POST. Además, mi elemento oculto se ve exactamente igual al código rígido que está en el formulario y se está enviando a POST. Me pregunto si es un problema de marco. – dscher

+0

¿Obtuvo su campo en la lista de elementos en el formulario? –

Cuestiones relacionadas