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 に答える