さて、非常に古いバージョンのプロトタイプから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のは本当にグローバルを持っていません知っています)最初のものを初期化しています
は「これはクリックイベントにで解雇された」イベントでコードを表示します。 – Jonast92