2017-06-23 13 views
1

さて、非常に古いバージョンのプロトタイプからjquery 3.2.1にアップグレードする必要があるコード混乱をphpとsmartyを使用する非常に古いWebサイトに継承しましたテンプレート(ugh)。.ajax内のif文のみ断続的にjqueryを呼び出す

ログインしているユーザーは、最大5つのケース番号を生成できます。それらはセッション変数とデータベースに格納されます。これらは使い捨ての数字です - 使用されないと、最終的にリサイクルされます。ユーザーがログインしている間は、最大5つの番号しか生成できません。

私は古いプロトタイプコードをjqueryに相当するものに翻訳しましたが、断続的にしか発火しません。新しいケース番号を取得する関数呼び出しは、スクリプトのdocument.ready部分にロードされているボタンにバインドされています。

編集:全体シェバング

 function GetNewCaseNumber() { 
      if (CurrentNumber <= 5) { 
       if (CurrentNumber == 1) { 
        NewNumber = true; 
        $('#getnumber').val("Get Additional Case Number"); 
       } else { 
        NewNumber = confirm("Are you sure you want another Case Number?"); 
       } 
       console.log("CurrentNumber: %s, NewNumber: ", CurrentNumber, NewNumber); 
       // Show Confirm Dialog 
       if (NewNumber == true) { 
        // Get another case number 
        // this fires sometimes, sometimes doesn't. why? 
        console.log("Div tag to update= %s", "CaseNumber" + CurrentNumber); 
        console.log("Current html content value= %s",$('#CaseNumber' + CurrentNumber).html()); 
        if (($.trim($('#CaseNumber' + CurrentNumber).html()) == '') || ($('#CaseNumber' + CurrentNumber).val() == null))      { 
         $.ajax({ 
          url: ("../ajax.php?event=ObtainCaseNumber&number=" + CurrentNumber), 
          async: true, 
          type: "GET", 
          dataType: "json", 
          success: function (server_response) { 
           console.log("Current Case Number %s", server_response); 
           $('#CaseNumber' + CurrentNumber).text(server_response); 
           $('#CaseNumber' + CurrentNumber).fadeIn("slow"); 
           CurrentNumber++; 
          }, 
          error: function (server_response) { 
           alert("There has been an ajax error: " + server_response); 
          } 
         }); 
         $('#CaseNumber' + CurrentNumber).fadeIn("slow"); 
         /* there are at least 2 casenumbers, show "these numbers" */ 
         $('#thisnumber').html("these numbers"); 
        } 
       } 
       // Hide Additional Buttons if this is the last one 
       if (CurrentNumber >= 6) { 
        $("#getnumber").fadeOut("slow"); 
       } 
      } else { 
       alert("You cannot generate anymore Case Number's at this time."); 
       $("#getnumber").fadeOut("slow"); 
      } 
     } 

含めて私はCurrentNumberがインクリメントされた場所に移動してその機能を編集しました。今は完璧に動作しているようです。あなたの迅速な助けと返信の皆様、ありがとうございます!

 function CheckCurrentCaseNumbers() 
     { 
     // Check what case numbers we already have 
      $(".caseList").each(function() { 
      if ($('#CaseNumber' + CurrentNumber).html() != "") 
      { 
       console.log("CCCN CurrentCaseNumber: %s", 'CaseNumber' + CurrentNumber); 
       $('#CaseNumber' + CurrentNumber).fadeIn("slow"); 
       CurrentNumber++; 
       console.log("CCCN CurrentNumber: %s", CurrentNumber); 
      } 
      }); 
      /* If there's at least 2 casenumbers, show "these numbers" */ 
      if ($("#CaseNumber2").html != "") 
      { 
       $("#thisnumber").html("these numbers"); 
      } 
      if ($("#CaseNumber1").html()) 
      { 
       $("#getnumber").val("Get Additional Case Number"); 
      } 
      $("#Loading").fadeOut("3000"); 
     } 

この

はdocument.readyタグにバインドさ、ボタンのクリックイベントにによって発射され、そしてNewNumberは== trueが警告確認です。それは、これらのdivを更新することになっています:

   <div id="CaseNumber1" class="caseList" style="display:none;">{$casenumbers.1}</div> 
       <div id="CaseNumber2" class="caseList" style="display:none;">{$casenumbers.2}</div> 
       <div id="CaseNumber3" class="caseList" style="display:none;">{$casenumbers.3}</div> 
       <div id="CaseNumber4" class="caseList" style="display:none;">{$casenumbers.4}</div> 
       <div id="CaseNumber5" class="caseList" style="display:none;">{$casenumbers.5}</div> 

新しいコンソールログ:

のInit ...

CurrentNumber: 1 
(index):23 generating case number 
(index):24 Current Number: 1 
(index):132 CurrentNumber: 1, NewNumber: true 
(index):137 Div tag to update= CaseNumber1 
(index):138 Current html content value= 
(index):146 Current Case Number 11481593 
(index):23 generating case number 
(index):24 Current Number: 2 
(index):132 CurrentNumber: 2, NewNumber: true 
(index):137 Div tag to update= CaseNumber2 
(index):138 Current html content value= 
(index):146 Current Case Number 11481594 
(index):23 generating case number 
(index):24 Current Number: 3 
(index):132 CurrentNumber: 3, NewNumber: true 
(index):137 Div tag to update= CaseNumber3 
(index):138 Current html content value= 
(index):146 Current Case Number 11481595 
(index):23 generating case number 
(index):24 Current Number: 4 
(index):132 CurrentNumber: 4, NewNumber: true 
(index):137 Div tag to update= CaseNumber4 
(index):138 Current html content value= 
(index):146 Current Case Number 11481596 
(index):23 generating case number 
(index):24 Current Number: 5 
(index):132 CurrentNumber: 5, NewNumber: true 
(index):137 Div tag to update= CaseNumber5 
(index):138 Current html content value= 
(index):146 Current Case Number 11481597 
(index):23 generating case number 
(index):24 Current Number: 6 

あなたの助けをありがとう!

ジュリー

は、ここに私の文書が準備ができています:

var CurrentNumber = 1; 
    $(document).ready(function() { 
    $('#getnumber').val("Obtain Case Number"); 
    $("#Loading").fadeIn("slow"); 
    /* console logging for debugging -- will be removed */ 
    console.log("Init..."); 
    console.log("CurrentNumber: %s", CurrentNumber); 
    CheckCurrentCaseNumbers(); 
    $('#getnumber').on("click", function() 
     { 
      console.log("generating case number"); 
      console.log("Current Number: %s", CurrentNumber); 
      GetNewCaseNumber(); 
     }); 
    }); 

発射ボタンこの:グローバルにする必要があるCurrentNumber

   <form> 
        <input type="button" value="Obtain Case Number" id="getnumber" /> 
       </form> 

(私はjQueryのは本当にグローバルを持っていません知っています)最初のものを初期化しています

+0

は「これはクリックイベントにで解雇された」イベントでコードを表示します。 – Jonast92

答えて

0

コンソールの出力によれば、ht mlのCaseNumber3要素の内容は ""ではなく "11481573"であるため、IF文は実行できません。強調表示された行で

ルック:

(index):19 CurrentNumber: 1 
(index):176 CCCN CurrentCaseNumber: CaseNumber1 
(index):179 CCCN CurrentNumber: 2 
(index):23 generating case number 
(index):24 Current Number: 2 
(index):132 CurrentNumber: 2, NewNumber: true 
(index):137 Current html content value= 
(index):147 Current Case Number 11481573 
(index):23 generating case number 
(index):24 Current Number: 3 
(index):132 CurrentNumber: 3, NewNumber: true 
(index):137 Current html content value= 11481573 // <-- HERE 
(index):23 generating case number 
(index):24 Current Number: 3 
(index):132 CurrentNumber: 3, NewNumber: true 
(index):137 Current html content value= 11481573 
(index):23 generating case number 
(index):24 Current Number: 3 
(index):132 CurrentNumber: 3, NewNumber: true 
(index):137 Current html content value= 11481573 
(index):23 generating case number 
(index):24 Current Number: 3 
(index):132 CurrentNumber: 3, NewNumber: true 
(index):137 Current html content value= 11481573 
(index):23 generating case number 
(index):24 Current Number: 3 
(index):132 CurrentNumber: 3, NewNumber: true 
(index):137 Current html content value= 11481573 
+0

それを指摘していただきありがとうございます。私は逃しました。だから私の増分は発射されていないように見えます。私はそれを見ます。 – jmsbrook

+0

はインクリメントの周りを移動し、完全に動作しています。もう一度感謝します。時々別の目をするのもいいですね。 – jmsbrook

関連する問題