Jquery ui - 自动完成 - 在保持相同的帖子值的同时更改Field的标签

时间:2012-03-06 01:49:15

标签: jquery-ui post autocomplete label jquery-ui-autocomplete

我正在研究这个jquery数据输入表单,其中我需要一个特定的字段来自动完成来自mysql的数据

我得到了一切正常,自动完成通过php匹配从sql检索数据是英语/拉丁语和utf8字符

从sql中检索的值为“'number'=>'name'”

现在,自动完成功能在输出,值,标签和ID中有3个值。 作为id和值,它使用'name' 标签是我的sql字符串的'number'(当表单被提交时发布到下一页)

所以一切正常,我的'号码'被正确发布,有一点小烦恼

当我从自动填充列表中选择某些内容时,该字段将填入“数字” 有没有办法用'名字'填写它? 即:搜索“名称”,使用“名称”下拉,点击并在字段中获取“名称”,当我提交时,我会发布“号码”吗?

任何帮助将不胜感激。

如果您需要查看我的代码,请将其发布在上一个问题:Jquery ui - Autocomplete - UTF8 charset

预先

thanx:)

2 个答案:

答案 0 :(得分:2)

通常的做法是:

  1. 使用隐藏的input来保存您要POST的值,然后自动填充单独的字段。
  2. input
  3. 上填充隐藏的select
  4. 使用所选项目的input属性填充可见的自动填充label
  5. 所以,例如:

    <强> HTML:

    <input type="hidden" name="name" />
    <input type="text" id="name_auto" />
    

    <强> JavaScript的:

    $(function () {
        var cache = {},
            lastXhr;
        $( ".name" ).autocomplete({
            minLength: 1,
            source: function( request, response ) {
                var term = request.term;
                if ( term in cache ) {
                    response( cache[ term ] );
                    return;
                }
    
                lastXhr = $.getJSON( "search.php", request, function( data, status, xhr ) {
                    cache[ term ] = data;
                    if ( xhr === lastXhr ) {
                        response( data );
                    }
                });
            },
            select: function (event, ui) {
                event.preventDefault();
                this.value = ui.item.label;
            },
            change: function (event, ui) {
                if (ui.item) { 
                    $("input[name='name']").val(ui.item.value);
                } else {
                    $("input[name='name']").val('');
                }
            }
        });
    });
    

答案 1 :(得分:1)

您可以使用u&#39; r自动完成中的结果(处理程序) 其中变量数据如数组,您可以一次返回两个数据 EXPL: 在javascript中

$().ready(function()
{
var url = "<?=base_url()?>index.php/master/agen";
var width_val = 308;
$("#name_auto").autocomplete(url,
{
    width: width_val,
    selectFirst: false,
 });

 $("name_auto").result(function(event, data, format)
 {
         $("#name_auto").val(data[0]);
         $("#id").val(data[1]);
 });
});
HTML中的

<input type="hidden" name="number" id="id" />
<input type="text" id="name_auto" name="name" />
PHP中的

foreach ($source->result() as $row)
{
echo "$row->nama|$row->id\n";
}

注意:这里我在其

中使用PHP CodeIgniter