Идентификатор текстового поля, созданный в цикле

0

Я хочу идентификатор каждого текстового поля в событии изменения текстового поля. Я сделал код для этого, но я не получаю ожидаемого результата. Я получаю значение текстового поля здесь, которое является "Сумма" в каждом текстовом поле.

Вот мой html-код: -

  @foreach (var item in ViewBag.countries)
     {                                                         
      <td>@Html.EditorFor(model => model.Amount, new { id = item.ID })</td>
     }

Вот мой код jquery:

  $('input[type="text"]').change(function () {
            var id = this.id;
            alert(id);
        });
  • 0
    @Hiigaran прочитайте мой ответ и посетите источник ответа, чтобы узнать больше.
  • 0
    Вам нужен идентификатор элемента или идентификатор текстового поля? Потому что оба это разные подходы
Теги:

2 ответа

0

Если я правильно догадываюсь, значение вашего Editorfor неверно. В этом случае это должно быть @Html.EditorFor(model => model.Amount, Model.Amout, new {id = item.ID}). Попытайтесь, я думаю, это должно сработать.

Это потому, что второй параметр EditorFor связывается с моделью и не является атрибутом Html.

Более того, я предлагаю вам всегда работать с циклом for в представлении, потому что привязка может вызвать проблемы с циклом foreach.

Поэтому в вашем случае это будет выглядеть так:

@for(int i = 0; i < ViewBag.countries.Count; i++)
{
    <td>
        @Html.EditorFor(model => model.Amount, Model.Amount, new { id = item.ID })
    </td>
}

Подробное объяснение: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

  • 0
    О, и я бы порекомендовал перейти на цикл for.
  • 1
    почему вы бы порекомендовали для цикла?
Показать ещё 2 комментария
0

Я предлагаю использовать что-то вроде:

new { data_id = item.id }

просто потому, что атрибут ID переписывается помощником EditorFor для правильной сопоставления с вашей моделью. Идентификатор и атрибуты имени не должны смешиваться, если вы используете редактор.

Вместо этого используйте то, что я сказал выше, а затем сделаем следующее:

$('input[type="text"]').change(function () {
    var id = $(this).data('id');
    alert(id);
});

Также убедитесь, что ваши ViewBag.Countries имеют правильные значения для идентификаторов страны...

Еще одна вещь: "это" не то же самое, что "$ (это)". В случае вашего кода JQuery вам нужно иметь $ (это), если вы хотите ссылаться на элемент, вызвавший событие изменения...

  • 0
    yes..Viewbag.countries предоставляет правильный идентификатор, но приведенный выше код также не дает ожидаемого результата, так как я хочу идентифицировать текстовые поля, которые я определил явно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню