Javascript bootbox,无法点击ENTER键

时间:2016-03-09 14:40:03

标签: javascript bootbox

当我打开引导箱时,输入信息,然后按回车键,它关闭引导箱并滚动回到页面顶部。 (它没有按下创建按钮或取消按钮)。我尝试将classname更改为btn-primary。这没有用。

以下是代码:

    bootbox.dialog({
    title: 'Create a new bucket',
    message:
            '<div class="row"> ' +
                '<div class="col-md-12"> ' +
                    '<form class="form-horizontal"> ' +
                        '<div class="form-group"> ' +
                            '<label class="col-md-4 control-label" for="bucketName">Bucket Name</label> ' +
                            '<div class="col-md-8"> ' +
                                '<input id="bucketName" name="bucketName" type="text" placeholder="Enter bucket name" class="form-control" autofocus> ' +
                                '<div>' +
                                    '<span id="bucketModalErrorMessage" ></span>' +
                                '</div>'+
                            '</div>' +
                        '</div>' +
                        '<div class="form-group"> ' +
                            '<label class="col-md-4 control-label" for="bucketLocation">Bucket Location</label> ' +
                            '<div class="col-md-8"> ' +
                                '<select id="bucketLocation" name="bucketLocation" class="form-control"> ' +
                                    generateBucketOptions(self.settings.bucketLocations) +
                                '</select>' +
                            '</div>' +
                        '</div>' +
                    '</form>' +
                '</div>' +
            '</div>',
    buttons: {
        cancel: {
            label: 'Cancel',
            className: 'btn-default'
        },
        confirm: {
            label: 'Create',
            className: 'btn-success',
            callback: function () {
                var bucketName = $('#bucketName').val();
                var bucketLocation = $('#bucketLocation').val();

                if (!bucketName) {
                    var errorMessage = $('#bucketModalErrorMessage');
                    errorMessage.text('Bucket name cannot be empty');
                    errorMessage[0].classList.add('text-danger');
                    return false;
                } else if (!isValidBucketName(bucketName, false)) {
                    bootbox.confirm({
                        title: 'Invalid bucket name',
                        message: 'Amazon S3 buckets can contain lowercase letters, numbers, and hyphens separated by' +
                        ' periods.  Please try another name.',
                        callback: function (result) {
                            if (result) {
                                self.openCreateBucket();
                            }
                        },
                        buttons: {
                            confirm: {
                                label: 'Try again'
                            }
                        }
                    });
                } else {
                    self.createBucket(bucketName, bucketLocation); //THIS IS IMPORTANT
                }
            }
        }
    }
});

3 个答案:

答案 0 :(得分:0)

这是一个带有确认对话框的示例

var dialog = bootbox.confirm({ ... });

//https://github.com/makeusabrew/bootbox/issues/411
dialog.on("shown.bs.modal", function () {
    dialog.attr("id", "dialog-1");
});

//https://stackoverflow.com/questions/26328539/bootbox-make-the-default-button-work-with-the-enter-key
$(document).on("submit", "#dialog-1 form", function (e) {
    e.preventDefault();
    $("#dialog-1 .btn-primary").click();
});

答案 1 :(得分:0)

如果您使用提示(但是此解决方案在其他情况下应该很有用) 这是实现此功能的最简单方法。

var input = document.getElementsByClassName("CLASS OF INPUT YOU WANT TO CHOOSE");
input[0].addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
      var click = document.getElementsByClassName("CLASS OF BUTTON YOU WANT TO PRESS");
      click[0].click();
     }
});

我还无法找到将ID分配给Bootbox中元素的方法,但是可以分配类。当然,您不能像选择带有ID的元素那样选择类,因此您要做的就是按类获取元素,即使您只有一个所述类的元素,这也会创建数组。因此,您必须在数组中选择正确的元素。在我的情况下,该值为[0]。选择您指定的键,然后使用按钮重复相同的过程。

如果您认真按照我的指示进行操作,您应该可以使用密钥提交数据。

答案 2 :(得分:-1)

$('#bucketName').on('keypress', function (event) {
    if(event.which === 13){
        bootbox.hideAll();
        $('html, body').animate({scrollTop: '0px'}, 1000);
    }

});