0

我有带有类别的 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 文件中的类别,但如果它是一个简单的修复,那么它将保存一些代码和对数据库的额外调用。

4

1 回答 1

0

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

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

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

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

$("#tipapp").submit(function() {
    $('#output').load('resultapp.php', {value: $(this).val(), cat:$(this).data('category')}); 
});
于 2012-12-30T23:50:29.940 回答