从输入文件元素获取值?
嗨,
我有一个如下所示的输入:
<input type="file" id="ModelViewAd.Files[0]" name="ModelViewAd.Files[0]" />
以这种方式设置 id 和名称以便能够绑定到视图类 (ASP.NET MVC2)。
当我尝试运行以下 jquery 命令来获取值时:
$('#ModelViewAd.Files[0]').val()
我得到未定义?
我做错了什么?
BestRegards
解决方案 :通过更改名称来解决(HTML4 不支持 [ 和 ])。但是如果您使用的是 HTML5,那么可以通过使用转义字符来解决这个问题,如下所示:$('#ModelViewAd.Files\[0\]').val()。
Hi,
I have a input that looks like this :
<input type="file" id="ModelViewAd.Files[0]" name="ModelViewAd.Files[0]" />
The id and name is set in this way to be able to bind to the viewclass (ASP.NET MVC2).
When I try to run the following jquery command to get value :
$('#ModelViewAd.Files[0]').val()
I get undefined?
What am I doing wrong?
BestRegards
Solution : This is solved by changing the name (HTML4 do not suport [ and ]). But If you are using HTML5 then this can be solved by using escape chars like this : $('#ModelViewAd.Files\[0\]').val().
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您需要转义选择器中的句点字符 (
.
)。否则,jQuery 将您的选择器解释为寻找具有 IDModelViewAd
和类Files[0]
的元素:一旦您实际选择了一个元素(我假设您的选择器没有正确执行),如果用户尚未实际选择文件,
.val()
方法仍可能返回undefined
。You need to escape the period character (
.
) in the selector. Otherwise, jQuery interprets your selector as looking for an element with IDModelViewAd
and classFiles[0]
:Once you have actually selected an element (which, I assume, your selector was not properly doing), the
.val()
method may still returnundefined
if the user has not actually selected a file.没有什么问题 - 这不受支持。这是浏览器中的安全限制,因此您无法推断有关最终用户的文件系统的任何信息。
Nothing wrong - this isn't supported. This is a security limitation in the browsers so that you cannot infer anything about the end user's file system.
.
字符对于id
属性来说不是有效字符。 MVC 在名称字段中使用.
,在id
中使用下划线。这可能是你不能用 jquery 获取它的部分原因。另外,在您的示例中,您向我们展示了名为
ModelViewAd.Files[8]
的元素,但尝试在 jquery 选择器中选择ModelViewAd.Files[3]
。这不是问题的一部分,不是吗?The
.
character is not a valid character for theid
attribute. MVC uses the.
's in the name field and underscores in theid
. That might be part of why you can't grab it with jquery.Also, in your example you show us the element named
ModelViewAd.Files[8]
but are trying to selectModelViewAd.Files[3]
in your jquery selector. Thats not part of the problem, is it?如果您的目标浏览器不支持
HTML5
,那么当您在 ID 属性中使用[
和]
时,您将使用无效的 HTML 。因此,您不应期望浏览器之间的行为一致。
正如其他人指出的那样,
.
与选择器引擎冲突,但它是有效的HTML4
。If you're targeting browsers that do not support
HTML5
, then you're using invalid HTML when you use[
and]
in an ID attribute.As such, you shouldn't expect consistent behavior between browsers.
As others noted the
.
conflicts with the selector engine, but it is validHTML4
.我得到了一个简单的解决方案并且效果很好
首先将 id 更改为 ModelViewAd 然后使用 jQuery 您可以简单地获取文件对象
I got a simple solution and it perfectly works
first change the id as ModelViewAd then using jQuery you can simply get the file object as