为了账号安全,请及时绑定邮箱和手机立即绑定

将 div 标签包含到输入的焦点中

将 div 标签包含到输入的焦点中

动漫人物 2023-11-13 14:47:55
所以我有一个输入,下面有一个下拉菜单。因此,当我单击输入时,下拉菜单将打开。但我无法从下拉列表中选择任何内容,因为它没有聚焦。因此,当我单击一个值时,它不会被选中,并且下拉列表会再次关闭,因为它失去了焦点。所以我现在想知道如何将 div 包含到输入的焦点中。HTML 输入:<input  type="text" class="form-control myInput" [(ngModel)]="textToSort"(keyup)="onKeyDownAction($event)" (blur)="onBlurEventAction()" id="{{id}}" (focus)="focusFunction()" (focusout)="unFocusFunction()"/>HTML div(下拉菜单):<div class="data-container" *ngIf="showDropDown" style="position: absolute;" >  <p   *ngFor="let data of dataList; let i = index"   class="data-list"                                   (click)="updateTextBox(i,data[columnName]); focusOnInput();"   [ngClass]="{highlight:checkHighlight(i)}"  > {{data[columnName]}}</p></div>成分:focusFunction(){    this.showDropDown = true;  }unFocusFunction() {    this.showDropDown = false;  }
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

blurinput由于mousedown列表项,您发生了事件

所以为了防止这种情况你需要添加

(mousedown)="$event.preventDefault()"

您的列表项的处理程序。我创建了简单的演示:

https://stackblitz.com/edit/angular-x3cdr1


查看完整回答
反对 回复 2023-11-13
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

最简单的方法如下:


focusFunction(){

   this.showDropDown = true;

}


unFocusFunction() {

  setTimeout(() => { this.showDropDown = false; }, 500);

}

我认为检查这个 stackblitz 也会有帮助: https://stackblitz.com/edit/angular-search-filter ?file=app%2Fapp.component.ts


查看完整回答
反对 回复 2023-11-13
?
阿晨1998

TA贡献2037条经验 获得超6个赞

您是否在 CSS 中尝试将下拉类展开时的 z-index 设置为 1?

请分享 plunkr 或 stackblitz 链接来查看该场景。


查看完整回答
反对 回复 2023-11-13
  • 3 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信