oral luego lista hacer garganta etiquetas dolor javascript django django-templates

javascript - luego - Firefox maneja xxx.submit(), Safari no... ¿qué se puede hacer?



dolor de garganta luego de hacer oral (3)

Estoy tratando de crear un menú desplegable para publicar un formulario cuando el usuario selecciona (suelta el mouse) en una de las opciones del menú. Este código funciona bien en FF, pero Safari, por alguna razón, no envía el formulario. Reescribí el código usando jquery para ver si la implementación de jquery .submit () manejaba mejor las peculiaridades del navegador. El mismo resultado, los trabajos en FF no funcionan en safari.

Los siguientes fragmentos son de la misma página, que tiene un poco de lenguaje de plantilla django mezclado.

Aquí está el intento vanilla js:

function formSubmit(lang) { if (lang != ''{{ LANGUAGE_CODE }}'') { document.getElementById("setlang_form").submit(); } }

Aquí está el intento de jquery:

$(document).ready(function() { $(''#lang_submit'').hide() $(''#setlang_form option'').mouseup(function () { if ($(this).attr(''value'') != ''{{ LANGUAGE_CODE }}'') { $(''#setlang_form'').submit() } }); });

y aquí está la forma:

<form id="setlang_form" method="post" action="{% url django.views.i18n.set_language %}"> <fieldset> <select name="language"> {% for lang in interface_languages %} <option value="{{ lang.code }}" onmouseup="formSubmit(''{{ lang.name }}'')" {% ifequal lang.code LANGUAGE_CODE %}selected="selected"{% endifequal %}>{{ lang.name }}</option> {% endfor %} </select> </fieldset> </form>

Mi pregunta es, ¿cómo puedo hacer que esto funcione en Safari?


El código sería:

<form id="setlang_form" method="post" action="{% url django.views.i18n.set_language %}"> <fieldset> <select name="language" onchange="formSubmit(this)"> {% for lang in interface_languages %} <option value="{{ lang.code }}" {% ifequal lang.code LANGUAGE_CODE %}selected="selected"{% endifequal %}>{{ lang.name }}</option> {% endfor %} </select> </fieldset> </form>

Para obtener el valor:

function formSubmit(theForm) { .... theForm.options[theForm.selectedIndex].value }

Puedes hacerlo con jquery también:

$(document).ready(function() { $(''#lang_submit'').hide() $(''#setlang_form select'').change(function () { .... $("select option:selected").text() .... } }); });

Mire aquí para conocer el evento de cambio con Jquery: http://docs.jquery.com/Events/change


Probablemente deberías usar el evento onchange de <select> lugar (o también).


xxx.submit () nunca pareció funcionar para mí tampoco. Una solución simple pero fea es tener la función que envía en la etiqueta HEAD de la página en lugar de un archivo JS externo, y usar document.getElementById (''whatever_the_id_of_the_form_is) .submit en lugar de definir una var que haga var .enviar()

No preguntes por qué. Pero esta es la única forma en que puedo hacer que safari se envíe con la función submit ().