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
会清除<textarea>
,以及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() 返回空字符串的主要内容,如果未能解决你的问题,请参考以下文章