从输入文件元素获取值?

发布于 2024-10-14 18:09:05 字数 502 浏览 2 评论 0原文

嗨,

我有一个如下所示的输入:

<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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

蓝海似她心 2024-10-21 18:09:05

您需要转义选择器中的句点字符 (.)。否则,jQuery 将您的选择器解释为寻找具有 ID ModelViewAd 和类 Files[0] 的元素:

$('#ModelViewAd\\.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 ID ModelViewAd and class Files[0]:

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

Once you have actually selected an element (which, I assume, your selector was not properly doing), the .val() method may still return undefined if the user has not actually selected a file.

jJeQQOZ5 2024-10-21 18:09:05

没有什么问题 - 这不受支持。这是浏览器中的安全限制,因此您无法推断有关最终用户的文件系统的任何信息。

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.

狼性发作 2024-10-21 18:09:05

. 字符对于 id 属性来说不是有效字符。 MVC 在名称字段中使用 .,在 id 中使用下划线。这可能是你不能用 jquery 获取它的部分原因。

另外,在您的示例中,您向我们展示了名为 ModelViewAd.Files[8] 的元素,但尝试在 jquery 选择器中选择 ModelViewAd.Files[3] 。这不是问题的一部分,不是吗?

The . character is not a valid character for the id attribute. MVC uses the .'s in the name field and underscores in the id. 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 select ModelViewAd.Files[3] in your jquery selector. Thats not part of the problem, is it?

情绪失控 2024-10-21 18:09:05

如果您的目标浏览器不支持 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 valid HTML4.

2024-10-21 18:09:05

我得到了一个简单的解决方案并且效果很好
首先将 id 更改为 ModelViewAd 然后使用 jQuery 您可以简单地获取文件对象

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

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

$('#ModelViewAd').get(0).files;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文