2

目标

修复发送输入的最后一个值的问题。

问题

提交后,我的应用程序中有以下片段:

$(event).find("input.quantity").val("").blur();

如您所见,我将值重置为"",但如果我第二次按 enter 没有任何值(提交),则传递的值是我输入的最后一个值。

我真的不知道该怎么办。

操场

我制作了这个 jsFiddle来说明我的问题,但它没有任何问题——我不知道为什么,因为我的应用程序是对其代码的改编。

我的真实代码

我正在做什么来重置我在上面传递的输入(在问题部分)并且两个函数(.val().blur())都在工作(输入未聚焦并且值更改为空),但似乎浏览器正在发送我之前传递的最后一个值。

只是为了考虑,请遵循我的提交触发器——是的,我正在使用 KnockoutJS(我认为这无关紧要):

self.add = function (item, event) {
    self.items.push(item);

    $.ajax({
        type: "POST",
        url: "/ProductsSummary/Add",
        data: { productId: item.id(), productQuantity: item.quantity() }
    });

    item.isAdded(true);

    $(event).find("input.quantity").val("").blur();
};

有人有什么想法吗?

4

2 回答 2

1

您的代码正在使用这个:

$(event).find("input.quantity").val().blur();

val()检索值,它不会修改它。利用val("")

不过,您实际上在您的 jsfiddle 中正确地执行了它......所以这就是它在那里工作而不是在您的实际代码中工作的原因。

于 2013-07-15T18:10:39.440 回答
0

看起来您忘记在真实代码中为 .val() 方法添加双引号。但是,您在“测试”代码中执行了此操作,这就是它起作用的原因。

您的测试代码:

$(event).find("input.quantity").**val("")**.blur();

- - - - - - - - - - 编辑

我刚刚在下面阅读了您的评论,如果这不是解决方案。您可以在调用函数后立即检查 $(event).val() 是否为空,如果为空则不执行任何操作

于 2013-07-15T18:14:14.070 回答