如何将jQuery自动填充类别作为表单提交的一部分发送?

时间:2012-12-30 23:03:46

标签: javascript jquery autocomplete

我有类别的jquery自动完成功能,当一个人用鼠标点击它时,它会发送到带有该值的php页面并报告一个页面。这很好用。

但是我希望用它发送类别。

这是最初的部分..

    $( "#tipapp" ).catcomplete({
        delay: 0,
        source: data,
            select: function(event, ui) {
                $("input#tipapp").val(ui.item.label);
                $("#tipapp").submit();
            },
    }).data("catcomplete")._renderItem = function(ul, item) {
                return $("<li></li>").data("item.catcomplete", item).append("<a>" + item.label + "</a>").appendTo(ul);
    };

和php的提要:

    $("#tipapp").submit(function() {
        $('#output').load('resultapp.php', {value: $(this).val()}); 
    });

从我读到的,我以为我可以简单地添加到php行:

$('#output').load('resultapp.php', {value: $(this).val(), cat: item.category});

但没有运气,我也改变了

select: function(event, ui, item) {
$("input#tipapp").cat(ui.item.category);

当然,没有运气。有大量页面使用自动完成和表单等,但这是针对类别的。

我在这里错过了一些简单的东西吗?我可以在项目上找到一个查找以获取我正在调用的php文件中的类别,但如果它是一个简单的修复,那么它将保存一些代码和额外的数据库调用。

1 个答案:

答案 0 :(得分:0)

ui.item.category确实应该包含项目的类别值。问题是ui对象可能在最终submit()处理程序的范围内未定义。

为了解决这个问题,您可以在调用处理程序之前将类别值存储在input元素的数据中,如下所示:

select: function(event, ui) {
    $("input#tipapp").val(ui.item.label).data('category',ui.item.category);
    $("#tipapp").submit();
}

然后在处理程序中,您可以从input元素的数据中检索类别值,如下所示:

$("#tipapp").submit(function() {
    $('#output').load('resultapp.php', {value: $(this).val(), cat:$(this).data('category')}); 
});