Javascript 简单onclick不';不要屈服

Javascript 简单onclick不';不要屈服,javascript,django,twitter-bootstrap,Javascript,Django,Twitter Bootstrap,我在上面找到了这些很棒的代码片段,可以将语言选择器更改为更时髦的东西。(心中的推特引导) 它看起来很整洁,但是当我实际单击选择时,onclick上没有提交任何内容。我还不是jquery方面的专家,但在最新的1.8.0版本中,是否有什么东西被弃用,从而阻止了onclick的工作 <form name="setLang{{ lang.1}}" action="/i18n/setlang/" method="POST">{% csrf_token %} <input name=

我在上面找到了这些很棒的代码片段,可以将语言选择器更改为更时髦的东西。(心中的推特引导)

它看起来很整洁,但是当我实际单击选择时,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>
{%csrf\u令牌%}

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


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

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


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

表单名中包含空格这一事实意味着您无法按预期的方式访问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>
{%csrf\u令牌%}

另外,请参见此处:

表单名称中包含空格这一事实意味着您无法按预期的方式访问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>
{%csrf\u令牌%}

另外,请参见此处:

您是否缺少
setLang
中的括号(例如
document.setLang({{lang.1}).submit();return false;
)?很抱歉,我将标记更改为javascript,因此没有人受到冒犯那些双括号不是表示模板吗?如果是这样,在显示模板时,它们将被替换为实际值…没错。它是Django.)问题确实是javascript。请参见下文,您在
setLang
中缺少括号(例如
document.setLang({{lang.1}).submit();return false;
)?很抱歉,我将标记更改为javascript,因此没有人受到冒犯。;-)那些双括号不是表示模板吗?如果是这样,在显示模板时,它们将被替换为实际值…没错。它是Django.)问题确实是javascript。见下文