【发布时间】:2017-07-18 06:12:31
【问题描述】:
我有以下 div,里面是一个输入文本。 div 有一个弹出框,我希望在输入文本成为焦点时显示它。如果输入文本失焦,我希望隐藏弹出框。我目前正在尝试使用以下代码来做到这一点:
HTML:
<div id="divParent" bs-popover
data-trigger="focus click"
data-auto-close="1"
data-placement="bottom"
class="pswd-popover"
data-template-url="people/user/user-profile/templates/password-requirements.html">
<rp-form-input-text
rp-model="page.userData.password"
config="page.formConfig.password">
</rp-form-input-text>
</div>
型号:
model.password = inputTextConfig({
id: "password",
fieldName: "password",
dataType: "password",
required: false,
maxLength: 24,
modelOptions: {
allowInvalid: true,
},
onFocus: model.getMethod("showPopover")
});
控制器:
vm.showPopover = function () {
var focus = true;
$(window).keyup(function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 9 && focus) {
$timeout(function() {
angular.element('#divParent').trigger('click');
}, 100);
focus = false;
}
});
};
我遇到的问题是我只希望通过选项卡触发 onfocus 功能。因为点击 div 会自动触发 popover 的显示。这就是为什么我有 keyup 功能来检测 div 是否被点击或通过 TAB 访问。另一个问题是我只通过触发 div 的 onclick 来显示和隐藏弹出框。如何在控制器中显示和隐藏父 div 的弹出框?
【问题讨论】:
-
您使用的是哪个弹出框? UI Bootstrap 的那些?
-
你可以为它创建一个 js-fiddle
标签: javascript angularjs popover