私の問題は、特定のイベントでjqueryを使って関数を呼び出そうとしていますが、間違ったイベントで実行されているということです。私は呼び出したい関数は次のとおりです。Jquery関数が間違った時刻にサブミットする
function resolvedAjax(tid){
$.ajax({type: 'post',url: 'resolveTicket.php',data: 'tid=' +tid, success: function(s){
$('#resolvedTicket').html("Resolved");
mainTable();
}});
}
私はjqueryのの、このブロック経由で呼び出すようにしようとしています:
$(document).on('click', '.viewTD', function(){
var tid = $(this).closest('tr').find('.tidTD input').val();
$.ajax({
type: 'post',
url: 'modalInfo.php',
data: 'tid=' +tid,
success: function(d){
$('.modal-body').html(d);
$('.modal-title').html("Ticket ID: " + tid);
$('#myModal').modal('show');
var time = $('#time').val();
var desc = $('#description').val();
$("#addComment").click(function(){
$.ajax({type: 'post', data: { myData: $('#commentAdd').serialize() }, url: "addComment.php", success: function(info){
$.ajax({
type: 'post',
url: 'modalInfo.php',
data: 'tid=' +tid,
success: function(d){
$('.modal-body').html(d);
$('.modal-title').html("Ticket ID: " + tid);
$('#myModal').modal('show');
}});
}});
});
}
});
$('#Resolved').click(resolvedAjax(tid));
});
問題は、私はviewTD
クラスをクリックしてモーダルを開くと、それが実行されるということです私が欲しいものではない機能です。 Resolved
のIDを持つモーダル内の解決済みのボタンをクリックすると、その関数が実行されるように、私はそれを取得しようとしています。現在のところ、開かれるとすぐに実行されており、解決されたボタンが閉じられるまで待機しません。 .click()
は正しいトリガではありませんか?私はコードを単純化し、より正確にするために関数の実装に取り組んでいる理由として、冗長であり、おそらく貧弱な構成のこのコードを最適化しようとしていますが、現在この関数は問題があり、わかりませんなぜ。
モーダルのボディは、jqueryコードの2番目のビットで最初のajax呼び出しによって構築されます。モーダルの中には、チケット情報とコメントを追加するためのフォームと解決ボタンがあるテーブルがあります。私はこの冗長なネストされたコードをすべて持っています。なぜなら、コメントを追加していくつかの問題を解決する唯一の方法であったからです(ただし、いくつか作成しましたが)。これらの機能の一部を稼働させることができれば、私はすべての機能を果たすことができると思うが、今はモーダルを開き、チケットをすぐに解決して、それを表示してコメントを正しく追加できるようにすることになっている。
私はおそらく何かシンプルだと知っていますが、私は過去にあまり使っていないのでjqueryを使うことを学んでいます。ごめんなさい、混乱があれば、
おかげ
編集は、私は今、このコードを持っていますが、それはまだ動作していない:
$(document).on('click', '.viewTD', function(){
window.tid = $(this).closest('tr').find('.tidTD input').val();
$.ajax({
type: 'post',
url: 'modalInfo.php',
data: 'tid=' +tid,
success: function(d){
$('.modal-body').html(d);
$('.modal-title').html("Ticket ID: " + tid);
$('#myModal').modal('show');
var time = $('#time').val();
var desc = $('#description').val();
}
});
});
$(document).on("click", "#addComment", function() {
$.ajax({type: 'post', data: { myData: $('#commentAdd').serialize() }, url: "addComment.php", success: function(info){
}});
});
$(document).on("click", "#Resolved", resolvedAjax(window.tid));
私はそのviewTD
クリックイベントの範囲のTID外部からアクセスできるように見えることはできません。私はウィンドウ、グローバル変数、オブジェクトを試しましたが、それを動かすことはできません。
addcommentハンドラをルートスコープに移動すると、何もしないので、inspect要素のコンソールにエラーが表示されたり、ネットワークペインのページが呼び出されたりしません。私が望むすべてのボタンをクリックすることはできますが、何も起こりません。これは先に起こっていたことです。なぜなら、元々はそうしたくないのですが、その範囲外で働く方法を考え出すことはできませんでした。 ルートスコープでは、他のすべてのスコープの外にあると仮定します。 – AndyPet74
私はそのコメントを投稿した後であなたの編集を見ました。あなたが投稿した構文に変更して、その部分が今働いています。私は '#Resolved'の部分に似たものを試してみるつもりです。 @Korgrue – AndyPet74
'tid'変数がそのスコープ内でのみ定義されているので、元の' viewTD'クリックイベントの範囲外で動作するようにはできません。public修飾子を使用できますか? – AndyPet74