-1

わかりましたので、display:noneを持ついくつかの要素といくつかのテキストエリアを含むページがあります

select 要素の値に応じて、対応する textarea が onchange イベントを介して表示されるようになります。$('#comment').show()

ページはいくつかの検証を伴うフォームであり、ユーザーが送信を押して検証に合格しなかった場合、フォームは同じデータといくつかのエラー メッセージとともに再表示されます。

今私が抱えている問題は、すべてのデータが表示されますが、コメント ボックスが表示されないことです。何が起こっているのかを確認するためにJavaScriptにいくつかのアラートを入れました.ページ全体とコメント領域が再び非表示になります。

  $(document).ready(function () {

      if ($('#Scope').val() == "Yellow" || $('#Scope').val() == "Red") {
          showComments("ScopeComment");
      }

      if ($('#Schedule').val() == ("Yellow") || $('#Schedule').val() == "Red") {
          showComments("ScheduleComment");
      }

      if ($('#Financial').val() == "Yellow" || $('#Financial').val() == "Red") {
          showComments("FinancialComment");
      }

      if ($('#Resource').val() == "Yellow" || $('#Resource').val() == "Red") {
          showComments("ResourceComment");
      }

      if ($('#Risk').val() == "Yellow" || $('#Risk').val() == "Red") {
          showComments("RiskComment");
      }

      alert("hello"); -------> At this point I see the alert and behind it all correct text areas are shows, but right after I press "OK" Ajax re-displays the page and my comments all hide
  });

  function showComments(textID) {
      $('#' + textID).show();
  }

Ajaxには、jq mobile ready関数の後に呼び出す独自の「ready」関数がありますか?? またはここで何が起こっているのか

4

1 に答える 1

0

これらのシナリオのどちらがあなたのケースにより適しているか確信が持てないので、両方を紹介します。

A. ajax 呼び出しを行い、手動でデータを返して更新しています

この場合、データがその場所に配置された後、ajax コールバック中に document.ready に対して行ったのと同じ呼び出しを行う必要があります。document.ready イベントは、ページを初めてロードしたときにのみ呼び出され、これらのフィールドを更新する後続の ajax リクエストはそれをトリガーしません。やなどの独自のイベントがcompleteありsuccessます。

B. ページ全体がサーバーから返されています。

新しいページ全体をロードする代わりに、JQuery Mobile は ajax 呼び出しを行ってページのコンテンツを取得し、それを DOM に挿入します。つまり、document.ready 関数は、最初に Web サイトに移動したときにのみ呼び出されます。あなたが望むのは、pageshow イベントにバインドすることです。元。

  $('#FormPage').live('pageshow', function () {

      if ($('#Scope').val() == "Yellow" || $('#Scope').val() == "Red") {
          showComments("ScopeComment");
      }

      if ($('#Schedule').val() == ("Yellow") || $('#Schedule').val() == "Red") {
          showComments("ScheduleComment");
      }

      if ($('#Financial').val() == "Yellow" || $('#Financial').val() == "Red") {
          showComments("FinancialComment");
      }

      if ($('#Resource').val() == "Yellow" || $('#Resource').val() == "Red") {
          showComments("ResourceComment");
      }

      if ($('#Risk').val() == "Yellow" || $('#Risk').val() == "Red") {
          showComments("RiskComment");
      }

      alert("hello"); -------> At this point I see the alert and behind it all correct text areas are shows, but right after I press "OK" Ajax re-displays the page and my comments all hide
 });
于 2012-09-18T17:51:56.933 に答える