JQuery val() 返回空字符串

Posted

技术标签:

【中文标题】JQuery val() 返回空字符串【英文标题】:JQuery val() returns empty string 【发布时间】:2012-06-05 11:57:29 【问题描述】:

这非常令人费解,我什至不确定我应该在这里发布什么代码。然而问题非常简单。 我在 JQuery 模式对话框中有一个表单,我正在其中进行一些价格计算。其中,我有一个字段折扣。呈现为:

<div class="editor-label">
    @html.LabelFor(model => model.Discount)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Discount, new  size = 10 )
</div>

我在 Firebug 调试器的 DOM 选项卡中看到,该字段的值为 20。当然,它在表单上可见。但是调用:

 $('#Discount').val()

返回一个空字符串。 这是唯一存在此问题的领域。为其他字段调用 val() 会返回正确的值。即使单击提交并调试提交模型的 MVC 操作,我也看到 Discount 的值在那里。只是 JQuery 函数返回一个空字符串并且只针对这个字段。

我知道这是一个有点抽象的问题,但有人有过这样的经历吗?

谢谢

生成的 HTML:

<div class="editor-label">
  <label for="Discount">Popust (%)</label>
</div>
<div class="editor-field">
  <input id="Discount" class="text-box single-line valid" type="text" value="0" name="Discount" data-val-range-min="0" data-val-range-max="100" data-val-range="Vredonst mora biti izmedju 0 i 100" data-val-number="Polje Popust (%) mora biti broj" data-val="true" size="10">
</div>

Firebug 中此元素的 DOM 选项卡显示值:“20”

【问题讨论】:

你能发布生成的输出(HTML)吗? 您可能还想尝试.text(),因为Html.EditorFor 会清除&lt;textarea&gt;,以及IIRC 和IINM,一些较旧的jQuery 版本无法使用.val() 提取textarea 值. text() 正在为表单上的所有输入字段返回一个空字符串。 能否请您发布一个调用 .val() 函数的 js 代码。不仅仅是一行代码,而是整段代码 您是否检查过 id 'Discount' 是唯一的? 【参考方案1】:

检查 id 'Discount' 是否唯一。

当在一个页面上放置多个表单时,我会单独保留“名称”,但始终将“表单”元素的 id 作为每个“值”的 id 的前缀。

帮我省了很多麻烦。

【讨论】:

你拯救了我的头痛:D 呃,我知道这个,知道这个,检查一下,这仍然是我的问题。你的回答让我“重新审视”了,谢谢! 我也遇到了这个问题。 “创建帐户”页面有“用户名”和“密码”字段,但同样的标题也有一个我忽略的带有“用户名”和“密码”的登录表单。谢谢!【参考方案2】:

达人的回答绝对一针见血。

但是,有时您希望返回具有相同 ID 的多个元素的值。 (注意: ID 应该是唯一的。另一方面,类不需要是唯一的。

要完成此操作,您需要使用 .each() 方法进行迭代。大多数返回对象的 jQuery 方法隐式迭代.val() 返回一个字符串,而不是一个对象。因此,它需要一个显式迭代循环。

您可以像这样使用.each() 方法。

$('.discount').each(function()
    $(this).val()
);

请注意,我将 OP 的 ID 更改为一个类,以便它是正确的 HTML。

【讨论】:

以上是关于JQuery val() 返回空字符串的主要内容,如果未能解决你的问题,请参考以下文章

即使为表单元素定义了名称属性,JQuery form.serialize() 也会返回空字符串

jQuery AJAX 表单错误。空字符串

错误:val 不是非空字符串或有效数字。值=未定义

去除数组里面值为空或者为空字符串的元素

php 实现字符串最大子串长度

空字符串或空格的正则表达式