我使用Bootbox.js(http://bootboxjs.com/)在我的应用程序中弹出窗体。 Bootbox有一个API,用于指定您可以选择添加到对话框的任何自定义按钮的回调。例如,下面是被传递到Bootbox一个选择对象:Bootbox“确认”回拨输入
var dialogOptions = {
message: bodyMessage,
className: uniqueClass,
closeButton: false,
onEscape: false,
title: i18n.t("common.loginHeader"),
buttons: {
login: {
label: i18n.t("common.signIn"),
className: "btn btn-success ",
callback: function() {
var user = $("#username").val();
var password = $("#password").val();
var toEncode = user + ":" + password;
fcr.api.authorization(window.btoa(toEncode), successCallback, errorCallback);
return false;
}
}
}
};
正如您可以猜到,这是一个身份验证对话框。回调中的“返回false”会阻止对话框关闭(如果成功,认证方法将查找并关闭它)。除此之外,它只是收集一些表单值并将它们一起发送。
问题是,由于该按钮不是“Submit”DOM元素,因此它不会侦听“Enter”键。说实话,这通常是一种祝福。但在这个特殊情况下(用户名/密码表单),我总是直觉地期望它用“Enter”键提交。如果我尝试向表单添加Submit按钮,则视觉“词汇表”的一致性将丢失。该按钮需要成为对话框的一部分,而不是表单的一部分。
我可以添加一个侦听侦听回车键(代码13)密码字段:
$('#password').keypress(function(e) {
if(e.which == 13) {
// do the submit?
}
});
但它似乎有点劈十岁上下。而且我必须将回调抽象为某种行为方法,以便任何活动都可以调用它。不一定是坏事,但我不会在其他地方需要该功能,所以它似乎是我可以避免给出替代方案的抽象。这是完成任务的唯一方式,还是有人知道更优雅的东西?
模态内容是否具有表单元素? –
是的,泰森。 –