JQuery val()返回空字符串

时间:2012-05-31 08:32:46

标签: jquery string return

这非常令人费解,我甚至不确定我应该在这里发布什么代码。然而问题很简单。 我在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”

2 个答案:

答案 0 :(得分:29)

检查ID“折扣”是否唯一。

当在单个页面上放置多个表单时,我只留下'name',但始终将'form'元素的id加到每个'value'的id前面。

给我带来了很多麻烦。

答案 1 :(得分:0)

达人的答案肯定打在了头上。

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

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

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

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

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