2011-01-15 10 views
1

filter_horizontalについて壊れているものがある場合、または動作が期待されることが間違っている場合、私は何か間違っているかどうか分かりません。どんな洞察にも感謝!私の心の中でDjangoさんのfilter_horizo​​ntal - フォーム入力を停止する入力を入力します

、あなたがfilter_horizontalを使用する場合、単一の項目がありますことをご選択は、絞り込んでテキストボックスに数文字を入力し、Enterキーを押し、それは必要があります。

  1. がに項目を追加します。選択したリスト
  2. 入力したテキストを消去します(別のテキストを追加することができます)。

これが実際に行うことは次のとおりです。

  1. はあなたの新しい選択を保存せずに、フォームを送信フィルタボックス
  2. 内のテキストを保管してください選択したリスト
  3. にあなたの項目を追加

何か間違っていますか?誰もが見ている行動ですか?これを回避する方法はありますか?

私は、Djangoの1.2.3を使用している、と私は私がDjangoの1.2.1での動作を確認することができクローム8.0.552.237は、Firefox 3.6.13、およびIE 8

答えて

1

でこれをテストしてみました。

問題:

admin/js/SelectFilter2.jsは、フィルタリングを行うためのハンドラアップキーを登録するように見えます。このハンドラは、キーがフォーム送信をキャンセルしようとするEnterキーであった場合もfalseを返します。管理者/ JS/SelectFilter2.jsライン85かそこらから

// don't submit form if user pressed Enter 
    if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) { 
     from.selectedIndex = 0; 
     SelectBox.move(field_id + '_from', field_id + '_to'); 
     from.selectedIndex = 0; 
     return false; 
    } 

はこの私には罰金見えたので、私は、フォームの提出イベントをキャッチするinitメソッドの最後にイベントハンドラを追加しました:それをやった後

addEvent(document.forms[0], 'submit', function(event) { 
     console.log("Form submitted"); 
    } 

、それはkeyUpイベント火災を提出することは明らかです。したがって、Enterを押すとフォームが送信され、keyUpイベントは決してフィールドに到達しません。

回避策:

私はすべてのフォーム自体にkeyUp年代に入る廃棄することにより現象を回避することができました。 SelectFilter2.jsでinitメソッドの最後にこれを追加します。

addEvent(document.forms[0], 'keyup', function(event) { 
     if (event.keyCode && event.keyCode == 13) { 
      return false; 
     } 
    }); 

この問題を修正するために迅速かつ汚い方法ですが、フォームのイベントが発生し、フィールドのイベントの後、動作しているようです。しかし、それはまた、Enterキーが他の場所にもフォームを送信するのを止めます。

おそらくdjango bugとして提出する必要があります。

+0

これは私のためにはうまくいかなかったようですが、これはうまくいきませんでした。 Djangoのどのバージョンをこれに対してテストしましたか? –

+0

@DanielNaab:1.2.1 – Seth

関連する問題