我正在使用一个旧的代码库,其中包含 Backbone JS、jQuery 和 Bootstrap 的技术堆栈。我有一个引导模式,用于更新服务器上的电子邮件地址。我不知道如何按照我想要的方式触发我的 Backbone JS 事件。
<div class="modal fade" id="modalUpdateEmail" role="dialog" aria-labelledby="update-email-title">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form id="updateEmailForm">
<div class="modal-body">
<label for="email">Please enter the email address you want to use:</label><br />
<input type="email" id="updateEmailInput" name="email" class="email-sm" title="eg. [email protected]">
</div>
<div class="modal-footer">
<div class="margin-bottom50">
<button id="btn-save-email" type="submit" class="btn btn-primary" data-dismiss="modal">Save</button>
<button id="btn-close-preferences" type="button" class="btn btn-default pull-right"
data-dismiss="modal">Cancel</button>
</div>
</div>
</form>
</div>
</div>
</div>
"submit #updateEmailInput": function (e) {
var email = e.currentTarget[0].value;
var dispute_name = this.model.get("dispute_name");
this.model.set("party_contact_email", this.email);
let self = this;
this.model
.updatePartyContactEmail(dispute_name, email)
.done(function (response) {
self.$("#success-on-party-email-updated").modal("show");
})
.fail(function (err) {
self.$("#error-on-party-contact-updated").modal("show");
});
},
如果我只有 HTML 中的电子邮件输入和表单 id="updateEmailForm 上的提交事件,它将起作用。成功模式会显示并且电子邮件地址已更新。
我需要添加一个保存按钮,可以在输入电子邮件后除了(或代替)使用回车键之外使用该按钮。根据我目前的情况(如上所示),更新电子邮件模式关闭,但成功模式不会触发,电子邮件也不会保存。
如果您为
submit form
而不是 submit #updateEmailInput
注册事件,则当您单击提交按钮以及在输入电子邮件输入时按 Enter 键时,都会调用处理程序。
由于该处理程序不会在其事件参数中获取对电子邮件输入的引用,因此您可以像这样读取新的电子邮件值:
this.$('#updateEmailInput').val()