ユーザーがメニューからオプションの 1 つを選択 (マウスを放す) したときに、プルダウン メニューにフォームを投稿させようとしています。このコードは FF では問題なく動作しますが、Safari では何らかの理由でフォームが送信されません。jquery を使用してコードを書き直し、jquery の .submit() 実装がブラウザーの癖をより適切に処理するかどうかを確認しました。同じ結果、FF で動作しますが、サファリでは動作しません。
次のスニペットは同じページからのもので、django テンプレート言語が混在しています。
バニラjsの試みは次のとおりです。
function formSubmit(lang) {
if (lang != '{{ LANGUAGE_CODE }}') {
document.getElementById("setlang_form").submit();
}
}
jqueryの試みは次のとおりです。
$(document).ready(function() {
$('#lang_submit').hide()
$('#setlang_form option').mouseup(function () {
if ($(this).attr('value') != '{{ LANGUAGE_CODE }}') {
$('#setlang_form').submit()
}
});
});
フォームは次のとおりです。
<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>
私の質問は、これを Safari で機能させるにはどうすればよいですか?