【问题标题】:In blazor component, focus in input text, how to make tab key to move focus to options drop-down?在 blazor 组件中,焦点在输入文本中,如何使 tab 键将焦点移动到选项下拉列表?
【发布时间】:2020-01-08 18:11:00
【问题描述】:

我在输入字段中输入了一些内容,选项变窄了。然后,通过按选项卡,焦点会跳过选项下拉菜单。我希望它跳转到选项列表。我在下面有一个示例。只能通过html属性来完成吗?如果没有,我怎么能在 blazor 中做到这一点?

我知道向上和向下键可以做到这一点。但我觉得 Tab 键更快更直观。

<input type="text" @bind="@newStudyCode" list="studies" autocomplete="on" placeholder="Search ..." />
<datalist id="studies">
        @if (Studies != null)
        {
            @foreach (var study in Studies)
            {
                <option value="@study.Code">@study.Code - @study.Title</option>
            }
        }
    </datalist>

编译后的html是这样的

<form>
  <input type="text" list="browsers" autocomplete="on" placeholder="Search ...">
  <datalist id="browsers">
            <option value="Firefox" tabindex="1">
                Firefox
            </option>
            <option value="Internet" tabindex="2">
                Internet
            </option>
            <option value="Chrome" tabindex="3">
                Chrome
            </option>
            <option value="Safari" tabindex="4">
                Safari
            </option>
  </datalist>
  <button type="submit">Push me</button>
</form> 

【问题讨论】:

    标签: blazor


    【解决方案1】:

    正如凯尔刚才所说,你只需要 tabindex

     <input type="text" @bind="@newStudyCode" list="studies" autocomplete="on" placeholder="Search ..." /> 
        <datalist id="studies"> 
           @if (Studies != null) 
              { 
                var i =1;
                @foreach (var study in Studies) 
                   { 
                      <option value="@study.Code" tabindex="@i">
                        @study.Code - @study.Title
                      </option
                      i++;
                   }
                } 
          </datalist>
    

    【讨论】:

    【解决方案2】:

    这可以通过使用常规的 html tabindex 属性来完成。 blazor 不需要什么特别的东西。

    例子:

    <a href="https://www.w3schools.com/" tabindex="2">W3Schools</a>
    <a href="http://www.google.com/" tabindex="1">Google</a>
    <a href="http://www.microsoft.com/" tabindex="3">Microsoft</a>
    

    请看这里: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex

    【讨论】:

    • 这不起作用,请看这里,jsfiddle.net/krgyxd7h/2
    • 哦,对不起。我误解了你的问题。您想浏览选项列表吗?对我来说这并不直观,但我认为这应该是可能的。我认为您唯一的选择是将javascript与JsInterop一起使用,并捕获tab键并在按键时检查其当前打开的输入,然后移至下一个。
    • 我希望焦点像输入文本一样移动--(tab)--> 选项下拉--(tab)--> 按钮。但我认为你是对的,我必须求助于 JS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多