@Onkeypress не получает обновленное значение поля ввода текста? - PullRequest
2 голосов
/ 11 октября 2019

У меня есть следующий код.

<input id="search" type="text" @bind="Search" @onkeypress="SearchChanged" />
@code {
    string Search;

    void SearchChanged() 
    { 
        var s = Search; // Search is always one character behind
    }
}

Ввод в текстовое поле вызовет функцию SearchChanged. Однако полученное значение всегда находится на один символ перед набираемым текстом. Например, если установить точку останова в SearchChanged,

Typed Value of  Search
===== ================
a     null
ab    a
abc   ab
abcd  abc

Кстати, @onkeypress не работает в интернет-браузере?


Попытался изменить код на

<input id="search" type="text" @bind="Search" />
@code {
    string search;
    string Search 
    {
        get { return search; }
        set {
            search = value;
            ResultList = GetNewList(search).Result.ToList(); 
        }
    }

    void SearchChanged() 
    { 
        var s = Search; // Search is always one character behind
    }
}

Я установил точку останова в set { }, однако при вводе текстового поля точка останова вводится один или два раза?

1 Ответ

0 голосов
/ 11 октября 2019

Вы ищете @bind-value:event:

<input id="search" 
       type="text" 
       @bind-value="Search" 
       @bind-value:event="oninput"
/>

@code {
  string search;
  string Search 
  {
    get { return search; }
    set {
        search = value;
        ResultList = GetNewList(search).Result.ToList(); 
      }
  }

Цитирование Привязка данных Документы:

В дополнение к обработке событий onchange с синтаксисом @bindсвойство или поле можно связать с помощью других событий, указав атрибут @ bind-value с параметром события (@ bind-value: event).

...