在.load()之后使用JavaScript和jQuery重置带有用户输入值的文本框

时间:2010-03-26 17:55:47

标签: javascript jquery

在用户在文本框'#DocId'中输入过滤字符串后,我的函数会调用部分视图。当用户完成键入时,将显示具有过滤数据的局部视图。由于我的文本框需要位于局部视图中,当用户输入过滤字符串并显示过滤后的数据时,文本框将被重置,用户输入的数据将丢失。在显示部分视图后,如何将文本框的值设置回用户输入的字符串?

我很确定我需要使用.val(),但我似乎无法让它发挥作用。

$(function() {
    $('#DocId').live('keyup', function() {
        clearTimeout($.data(this, 'timer'));
        var val = $(this).val();
        var wait = setTimeout(function() { $('#tableContent').load('/CurReport/TableResults', { filter: val }, 500) }, 500);
        $(this).data('timer', wait);
    });
});

谢谢,

亚伦

1 个答案:

答案 0 :(得分:2)

您可以存储ID,然后调用该选择器并将值设置回来,如下所示:

$(function() {
    $('#DocId').live('keyup', function() {
        clearTimeout($.data(this, 'timer'));
        var val = $(this).val(), id = this.id;
        var wait = setTimeout(function() {
          $('#tableContent').load('/CurReport/TableResults', { filter: val });
          $("#" + id).val(val);
        }, 500);
        $(this).data('timer', wait);
    });
});

或者,由于您要将过滤器传递给服务器,让服务器在渲染局部视图时填充它,这可能是一种更直接的方法。