2009-07-08 11 views
21

Estoy usando Firefox y he estado leyendo algunos foros afirmando que esto no funciona en Firefox, pero ha funcionado para mí en los últimos días pero ha dejado de funcionar y no puedo entender por qué.document.getElementById ("tweetform"). ¿Enviar no es una función?

Realizo una solicitud AXAX POST utilizando un IFrame. Cuando llego a la respuesta utilizo este:

function startLoad(){ 
    $.get("update.php", function(data){ 
      if(data==''){ 
       startLoad(); 
      } 
      else{ 
       document.getElementById("tweetform").submit(); 
      } 
    }); 
} 

Sin embargo, a partir de Firebug, me sale esto:

document.getElementById("tweetform").submit is not a function 
[Break on this error] document.getElementById("tweetform").submit(); 

Sé presentar existe, pero lo que está pasando?

+1

¿Existe el elemento tweetform? ¿Es una forma? – seth

+0

¿Puede alertar (document.getElementById ("tweetform")) y verificar si devuelve un formulario? – Pradeep

+0

Sí, existe una forma de tweetform y esa alerta devuelve: [objeto HTMLFormElement] – Abs

Respuesta

78

Mi suposición sería que usted tiene un elemento en forma lo que se llama "submit" (posiblemente un <button> o <input type="submit">, y que ".submit" es recuperar una referencia a ese elemento, en lugar de la función miembro "submit()". Si este es el caso, trate de cambiar el nombre de ese elemento a otra cosa (por ejemplo, "submit_button").

+6

Buena llamada. He sido mordido por esto antes. – harto

+0

¡Tenemos un genio aquí! :) Tienes razón, ¡tenía un botón con el atributo de nombre "enviar"! Pero, ¿de qué sirve getElementById si no hace referencia a ese elemento? : P – Abs

+0

Lo hace. Su problema es que 'myForm.submit' es otro elemento y no una función que envía el formulario. – Quentin

-1

Supongo que está utilizando jQuery.

Pruebe esto en su lugar.

$("#tweetform").submit(); 
+1

Eso es lo mismo que document.getElementById ("tweetform"), por lo que si eso falla, ejecutar el equivalente de jQuery no hace la diferencia. – ichiban

+0

Y, sin embargo, la gente todavía lo vota. Ridículo. –

+0

bueno ... este tipo de error que el tipo tenía no habría sucedido usando la sintaxis que recomendé. –

-4

Use document.forms [ 'tweetform']. submit() en lugar

+4

Accediendo al objeto HTMLFormElement una diferente de ninguna manera va a hacer que el método de envío mágicamente comience a funcionar. – Quentin

4

Jason Musgrove explicó el problema bien

Puede utilizar un nativo método presentar de HTMLFormElement a trabajar en torno a un problema:

HTMLFormElement.prototype.submit.call($('#tweetform')[0]); 
0

En realidad es suficiente para cambiar el nombre del nombre de la entrada < = "submit"/> a otra cosa y funciona.

Cuestiones relacionadas