我使用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?
}
});
但它似乎有點劈十歲上下。而且我必須將回調抽象爲某種行爲方法,以便任何活動都可以調用它。不一定是壞事,但我不會在其他地方需要該功能,所以它似乎是我可以避免給出替代方案的抽象。這是完成任務的唯一方式,還是有人知道更優雅的東西?
模態內容是否具有表單元素? –
是的,泰森。 –