2011-01-06 9 views
0

テキストフィールドがフォーカスを取得したときにアクションメソッドを呼び出して、そのフィールドがデータベースから関連付けられているモデルオブジェクトの説明を取得したいとします。MVC 2アプリケーションで繰り返し呼び出されるjQuery関数

私はこのjQueryの機能を持っている:

function getDescription() { 
     $('.hourInput').focus(function() { 
      var name = $(this).attr('name'); 
      var url = '<%=Url.Action("GetDescription", "Timesheet") %>' 
      $.get(url, { name: name }, function (data) { 
       $('#description').val(data); 
      }); 
     }); 
    } 

そして今のこの単純なテスト・アクションメソッド:

public ActionResult GetDescription(string name) 
    { 
     return Content("Testing"); 
    } 

それは限りテストテキストの取得など正常に動作しますが、私ならば問題がありますアクションメソッドにブレークポイントを設定すると、テキストボックスでフォーカスを変更したときだけでなく、何度も呼び出されることがわかります...

誰もが何らかの理由がありますか?

+4

これは馬鹿に聞こえるかもしれませんが、Visual Studioに戻ってIEに戻ってフォーカスイベントが再度トリガされる原因になることがありますか? –

+0

異なるブラウザを試してみてください。「focus」のjqueryページには、「フォーカスイベントでイベントの委譲に依存するスクリプトは、ブラウザ間で一貫して動作しません」と記載されています。また、$( '#hourInput') 'を試してください。ここで、hourInputは入力タグのIDです。使用されているブラウザとjQueryのバージョンは何ですか? –

+0

@Matthew:まあ、私もそれについて考えました。だから、まったく馬鹿だとは思わないでしょうし、それは私が推測する答えかもしれませんが、Visual Studioは自動的にブレークポイントに切り替わります。それが問題なのか、実際にいくつかのループがある場合は修正する必要がありますか?また、プログラムを切り替えると何度もフォーカスを受けてしまうことは考えられませんでしたが、少なくとも同じページ内でフォーカスを切り替える必要があると思いました。 – Anders

答えて

1

これはばかげているかもしれませんが、Visual Studioに切り替える場所で、フォーカスイベントが再びトリガされるIEに戻ることができますか?

フィールドの説明が変更されない場合は、実際に応答をキャッシュする必要があります。実際には、実際にこのアクションが必要ですか?ページを最初にレンダリングするときにフィールドの説明を書き込むことはできませんか?

+0

いいえ、私のコメントでJamesに言及したように、クラスhourInput(タスクごとに1つの行、週の各曜日に1つの列)を持つ入力フィールドがたくさんあります。自分の説明。つまり、説明を表示し、ユーザーが選択した入力フィールドに対して説明を変更できるようにすることがポイントです。ありがとう。 – Anders

関連する問題