J'essaie de faire un menu déroulant poster un formulaire lorsque l'utilisateur sélectionne (libère la souris) sur l'une des options du menu. Ce code fonctionne très bien dans FF mais Safari, pour une raison quelconque, ne soumet pas le formulaire. J'ai réécrit le code en utilisant jquery pour voir si l'implémentation .submit() de jquery traitait mieux les caprices du navigateur. Même résultat, les travaux en FF ne fonctionnent pas en safari.Firefox gère xxx.submit(), Safari ne ... ce qui peut être fait?
Les extraits suivants sont de la même page, qui a un langage de template django mélangé
est ici la tentative de la vanille.
function formSubmit(lang) {
if (lang != '{{ LANGUAGE_CODE }}') {
document.getElementById("setlang_form").submit();
}
}
est ici la tentative jquery:
$(document).ready(function() {
$('#lang_submit').hide()
$('#setlang_form option').mouseup(function() {
if ($(this).attr('value') != '{{ LANGUAGE_CODE }}') {
$('#setlang_form').submit()
}
});
});
et voici le formulaire:
<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>
Ma question est, comment puis-je obtenir ce travail dans Safari?
Je vote pour "plutôt". Pas besoin d'attraper la souris sur une option. Ce n'est même pas judicieux, car les événements déclenchés par le clavier vont être manqués. – Tomalak