Javascript Firefox处理xxx.submit(),Safari不处理';T可以做些什么?
当用户从菜单中选择(释放鼠标)其中一个选项时,我试图在表单上创建一个下拉菜单。这段代码在FF中运行良好,但由于某些原因,Safari没有提交表单。我使用jquery重新编写了代码,以查看jquery的.submit()实现是否能更好地处理浏览器的问题。同样的结果,在FF中有效,在safari中无效 以下代码段来自同一个页面,其中混合了一些django模板语言 下面是一个尝试:Javascript Firefox处理xxx.submit(),Safari不处理';T可以做些什么?,javascript,django,django-templates,Javascript,Django,Django Templates,当用户从菜单中选择(释放鼠标)其中一个选项时,我试图在表单上创建一个下拉菜单。这段代码在FF中运行良好,但由于某些原因,Safari没有提交表单。我使用jquery重新编写了代码,以查看jquery的.submit()实现是否能更好地处理浏览器的问题。同样的结果,在FF中有效,在safari中无效 以下代码段来自同一个页面,其中混合了一些django模板语言 下面是一个尝试: function formSubmit(lang) { if (lang != '{{ LANGUAGE_COD
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>
{%用于接口中的lang_语言%}
{{lang.name}
{%endfor%}
我的问题是,如何在Safari中实现这一点?您可能应该使用
的onchange
事件来代替(或同时使用)。代码应该是:
<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>
您也可以使用jquery执行此操作:
$(document).ready(function() {
$('#lang_submit').hide()
$('#setlang_form select').change(function () {
.... $("select option:selected").text() ....
}
});
});
查看此处了解Jquery的更改事件:
xxx.submit()似乎对我也不起作用。简单但难看的修复方法是在页面的HEAD标记中使用submit函数,而不是外部JS文件,并使用document.getElementById('表单的id是什么?).submit,而不是定义一个var然后执行var.submit()
不要问为什么。但这是我使用submit()函数让safari实际提交的唯一方法。我投票赞成“改为”。不需要在选项上抓住鼠标。这甚至是不明智的,因为键盘启动的事件将被错过。
$(document).ready(function() {
$('#lang_submit').hide()
$('#setlang_form select').change(function () {
.... $("select option:selected").text() ....
}
});
});