Хорошо, в этом проекте у меня сложная настройка.Это игра Phaser 3.Я загружаю все свои скрипты в заголовок HTML-файла.window.onload
вызывает App.start()
, который настраивает и загружает Phaser и сцены.В моем классе сцены заголовка я делаю вызов ajax и получаю HTML-шаблон, который затем отображается в модальном режиме.Я не могу обработать события в сгенерированном модальном для работы.Я пробовал:
$('#loginForm').on('submit', (event) => {
event.preventDefault();
let values = $('#loginForm').serialize();
console.log(values);
}
и
$(document).on('submit', '#loginForm', (event) => {
event.preventDefault();
let values = $('#loginForm').serialize();
console.log(values);
}
, а также пытался привязать к фактической кнопке отправки.Со всем, что я пробовал, страница перезагружается и обрабатывает форму как отправку получения (значения добавляются в URL).Я должен отметить, что ни action
, ни method
формы не были установлены;только id
.
Что можно сделать для захвата события отправки?
РЕДАКТИРОВАТЬ: Добавление кода
App.js
let App = function() {};
App.prototype.start = () => {
let scenes = [];
scenes.push(Loading);
scenes.push(Title);
scenes.push(Start);
let config = {
type: Phaser.AUTO,
width: 900,
height: 600,
parent: 'gameDiv',
scene: scenes
};
let game = new Phaser.Game(config);
...
};
Title.js (текущее тестирование)
class Title extends Phaser.Scene {
constructor(){
super({key: 'Title'});
}
preload(){}
create(){
let _t = this;
let btnLogin = this.add.sprite(300, 350, 'login');
let btnRegister = this.add.sprite(570, 350, 'register');
let logoText = this.add.bitmapText(80, 100, 'Lombardic', 'Dragon Court', 108);
btnLogin.setInteractive();
btnRegister.setInteractive();
btnLogin.on("pointerdown", (pointer) => {
DC.templateCall('user', 'mode=login_tpl', () => {
DC.templateFormHandler('loginForm', (event) => {
event.preventDefault();
let loginData = $("#loginForm").serialize();
console.log(loginData);
/*
modal.close();
Ajax.call('user', params, (result) => {
if(result.status){
_t.scene.start('Start', { fr: result.data.first_run, hc: result.data.has_char });
}else{
DC.modal('LoginError', '<div>'+result.error+'</div>', () => {});
}
});
*/
});
});
});
}
}
Функция templateFormHandler:
templateFormHandler: (id, callback) => {
$("#"+id).on("submit", callback);
}