Получить значение из элемента файла intput? - PullRequest
0 голосов
/ 30 января 2011

Привет

У меня есть вход, который выглядит так:

<input type="file" id="ModelViewAd.Files[0]" name="ModelViewAd.Files[0]" />

Идентификатор и имя задаются таким образом, чтобы иметь возможность привязываться к классу просмотра (ASP.NET MVC2).

Когда я пытаюсь запустить следующую команду jquery, чтобы получить значение:

$('#ModelViewAd.Files[0]').val()

Я получил неопределённость?

Что я делаю не так?

BestRegards

Решение : Это решается путем изменения имени (HTML4 не поддерживает [и]). Но если вы используете HTML5, то это можно решить с помощью escape-символов, например: $ ('# ModelViewAd.Files \ [0 \]'). Val ().

Ответы [ 5 ]

1 голос
/ 30 января 2011

Если вы нацеливаетесь на браузеры, которые не поддерживают HTML5, то вы используете недопустимый HTML, когда используете [ и ] в атрибуте ID.

Таким образом, вы не должныНе ожидайте согласованного поведения между браузерами.

Как отмечали другие, . конфликтует с механизмом выбора, но это действительно HTML4.

1 голос
/ 30 января 2011

Символ . не является допустимым символом для атрибута id.MVC использует . в поле имени и подчеркивания в id.Это может быть частью того, почему вы не можете получить его с помощью jquery.

Кроме того, в вашем примере вы показываете элемент с именем ModelViewAd.Files[8], но пытаетесь выбрать ModelViewAd.Files[3] в вашем селекторе jquery.Это не часть проблемы, не так ли?

1 голос
/ 30 января 2011

Вам необходимо экранировать символ точки (.) в селекторе . В противном случае jQuery интерпретирует ваш селектор как поиск элемента с идентификатором ModelViewAd и классом Files[0]:

$('#ModelViewAd\\.Files[0]')

После того, как вы фактически выбрали элемент (что, как я полагаю, ваш селектор делал неправильно), метод .val() может все еще возвращать undefined, если пользователь фактически не выбрал файл.

1 голос
/ 30 января 2011

Ничего плохого - это не поддерживается.Это ограничение безопасности в браузерах, поэтому вы ничего не можете сделать о файловой системе конечного пользователя.

0 голосов
/ 22 августа 2013

Я получил простое решение, и оно отлично работает: сначала измените идентификатор на ModelViewAd , а затем с помощью jQuery вы можете просто получить объект файла как

$('#ModelViewAd').get(0).files;
...