0

我在这个博客上发现了这个很棒的代码片段,可以将语言选择器更改为更时尚的东西。(记住 Twitter 引导程序)

它看起来很整洁,但是当我实际单击选择时,onclick没有提交任何内容。我还不是 jquery 方面的专家,但是在最新的 1.8.0 版本中是否已经弃用了某些东西,从而阻止了它onclick的工作?

<form name="setLang{{ lang.1}}" action="/i18n/setlang/" method="POST">{% csrf_token %}
   <input name="next" type="hidden" value="{{ redirect_to }}" />
   <input type="hidden" name="language" value="{{ lang.0 }}" />
   <a href="#" onclick="document.setLang{{ lang.1 }}.submit(); return false;">{{ lang.1 }}</a>
</form>
4

2 回答 2

2

你不能document.setLang{{ lang.1 }}用来获取form. 这不是DOM 元素的有效名称。JavaScript 将在遇到的第一个空格处中断处理,并抛出错误。

我强烈建议你使用一个有效的name值,但如果你真的需要继续使用它,你可以使用document.getElementsByName("setLang{{ lang.1}}")[0].submit().​​​​</p>

于 2012-08-20T00:43:17.493 回答
1

您的表单名称中包含空格这一事实意味着您无法以您想要的方式访问 DOM 中的表单项。我会给表单一个不包含空格的 id 并以这种方式访问​​它。

<form name="setLang{{ lang.1}}" id="setLang" action="/i18n/setlang/" method="POST">{% csrf_token %}
   <input name="next" type="hidden" value="{{ redirect_to }}" />
   <input type="hidden" name="language" value="{{ lang.0 }}" />
   <a href="#" onclick="document.setLang.submit(); return false;">{{ lang.1 }}</a>
</form>

另外,请参见此处: 使用 javascript 访问 HTML 输入字段 - 输入名称中的空格

于 2012-08-20T00:45:25.250 回答