将其他表单元素传递给ajax建议框脚本

时间:2011-11-20 17:30:09

标签: javascript jquery ajax

**搬到这里: numerous similar AJAX suggestion boxes without ID's


我花了一些时间给我建立一个jQuery AJAX建议框脚本。它很棒。现在我正在努力学习它以修改它以做一些不同的事情。

现在,生成建议的脚本只接受查询文本,并且每次都进行相同的检查。现在,我希望能够传递其他信息,以便在搜索框的每个实例中查找不同的内容。

HTML ......简单明了。

<input class="suggest" name="q" type="text" autocomplete="off" />

jQuery看起来像这样:

jQuery(document).ready(function()
{

    $('.suggest').autocomplete(
    {

        source:'output.php', minLength:3,

        focus: function (event, ui) 
        {
          $(event.target).val(ui.item.label);
          return false;
        }

    }
    );


[snip]

}

而不是:

source:'output.php', minLength:3,

我想:

source:'output.php?arg1=blah1&arg2=blah2', minLength:3,

其中arg1和arg2以形式...

传递
<input class="suggest" name="q" type="text" autocomplete="off" />

<input type="hidden" name="arg1" value="blah1" />

<input type="hidden" name="arg2" value="blah2" />

这有意义吗?

谢谢你们。我知道关于OOL和javascript的“这么多”,所以我正在学习......

++++++++++++++++++++++++++

更新

这些不起作用......

//来源:'/ suggest /?q ='+ \ $('input [name = q]')。val(),minLength:3,

//来源:'/ suggest /?q ='+ \ $('input [type =“text”] [name =“q”]')。val(),minLength:3,

//来源:'/ suggest /?q ='+ \ $('input [type =“text”]')。val(),minLength:3,

//来源:'/ suggest /?q ='+ \ $('input:text')。val(),minLength:3,

//来源:'/ suggest /?q ='+ \ $('input [type = text]')。val(),minLength:3,

......但这确实......

    source:'/suggest/?q='+'alex', minLength:3,

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我认为这就是你要找的东西:

$('.suggest').autocomplete({
    source:'output.php?arg1='+$('input[name=arg1]').val()+'&arg2='+$('input[name=arg2]').val(), minLength:3,
});

答案 1 :(得分:0)

您可以使用jQuery的.serialize()方法逃脱。文档说明它将:

  

将一组表单元素编码为字符串以供提交。

这听起来像你想要做的。你可以尝试这样的事情:

$('.suggest').autocomplete({
    source:'output.php?' + $("#MY_FORM_ID").serialize(), minLength:3,
    focus: function (event, ui) {
      $(event.target).val(ui.item.label);
      return false;
    }
});

编辑:请注意,使用字符串作为source不会导致URL随输入值动态更改。为此,您需要使用回调函数并自行处理请求/响应。我在上面显示的代码将在实例化自动完成窗口小部件时使用MY_FORM_ID的值。