私はapplyToDetailRowsと呼ばれる関数を持っています。これは、ロード時、およびページの入力セクションがajaxを介して再描画されるときに呼び出します。この関数は、描画される入力フィールドに一連のイベントをアタッチします。フィールド上のイベントの1つはblurで、これは学生情報をフェッチするためのajax呼び出しをトリガーします。問題は、blur ajaxトリガーが、blurで起動するのではなく、各フィールドのページが読み込まれるたびに起動することです。また、これは、関数がapplyToDetailRows内で定義されている場合にのみ発生します。applyToDetailRowsから引き出すと、正常に機能します。
注意すべき点の1つは、applyToDetailRowsでも同様の方法でオートコンプリートが定義されており、正常に機能することです。しかし、これではありません。
function applyToDetailRows() {
$(":input[data-getstudent]").each(function() {
$(this).on('blur', function () {
var elem = this;
$.ajax({
url: $(elem).attr('data-getstudent'),
dataType: "json",
data: {
studentNumber: $(elem).val()
},
success: function (result) {
}
});
});
});
}
/* some other definitions */
//applyToDetailRows called
applyToDetailRows();