0

私は問題があります。私はこのjs関数を持っています:

 <script>
function checkall(perm){

var permall = parseInt(perm);

if (permall==0) {
    {% for user in users %}
    document.getElementById("perms_{{user.id}}_0").checked=true
    document.forms['form_user_{{ user.id }}'].submit();
    {% end %}}
else if (permall==1) {
    {% for user in users %}
    document.getElementById("perms_{{user.id}}_1").checked=true
    document.forms['form_user_{{ user.id }}'].submit();
    {% end %}}
else if (permall==4) {
    {% for user in users %}
    document.getElementById("perms_{{user.id}}_4").checked=true
    document.forms['form_user_{{ user.id }}'].submit();
    {% end %}}

 }
</script>

ボタンをクリックすると、この関数が呼び出され、ユーザーのリスト内のすべてのユーザーに対して、相対的なアクセス許可のユーザー ラジオ ボタンをオンに設定し、ユーザー フォームを送信して DB にアクセス許可を設定します (これはハンドラーを呼び出します)。 Python で)。

これで、ラジオボタンをチェックするように設定するコードが正常に機能します。しかし、リスト内の最初のユーザーのフォームのみが送信されます...関数は、最初のユーザーにのみ権限を設定します。また、Python ハンドラーは 1 回だけ呼び出されます (デバッグ プリントを作成しました)。

なんで?

4

1 に答える 1

2

フォームのアクションの呼び出しは、submit()自分でボタンを押した場合とまったく同じです。サーバーからの応答 (通常はリダイレクト) でページ全体が更新されるため、それ以上の JS アクションは処理されません。

一度に複数の送信を行う場合は、値を自分でシリアル化し、AJAX 経由で送信する必要があります。

于 2013-03-18T12:35:07.000 に答える