简单的onclick不提交

时间:2012-08-20 00:37:03

标签: javascript django twitter-bootstrap

我在这个blog上找到了这个很棒的代码片段来更改语言选择器以获得更时尚的东西。 (Twitter-bootstrap记住)

它看起来非常整洁,但是当我实际点击选择时, 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>

2 个答案:

答案 0 :(得分:2)

您无法使用document.setLang{{ lang.1 }}获取form。这是 DOM元素的有效名称。 JavaScript将在它遇到的第一个空格处破坏处理,并抛出错误。

我强烈建议您使用有效的name值,但如果您确实需要继续使用该值,则可以使用document.getElementsByName("setLang{{ lang.1}}")[0].submit()访问该元素。

答案 1 :(得分: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>

另请参阅此处:Accessing HTML input fields with javascript - spaces in input name