【问题标题】:Jquery Autocomplete : how to setup what to send to the server?Jquery Autocomplete:如何设置发送到服务器的内容?
【发布时间】:2011-09-20 22:30:18
【问题描述】:

目前,在输入内容后,服务器会返回如下内容:

[{"id":"1", "value":"My first character"},{"id":"2", "value":"My second Character"}]

当我选择“我的第一个字符”并汇总表单时,它会发送:

array(1) { ["members"]=> string(18) "My first character" }

但我宁愿发送 ID。如何告诉 .autocomplete 发送 id 而不是字段的标签? (JS code)

它一定很简单,但我想念它。

谢谢

【问题讨论】:

    标签: javascript jquery jquery-ui autocomplete


    【解决方案1】:

    实际上,如果您使用的是文本输入,您将始终提交显示的值。您可以做的是将 id 复制到隐藏元素,然后捕获该服务器端。你可以这样做:

                select: function( event, ui ) {
                        var terms = split( this.value );
                        // remove the current input
                        terms.pop();
                        // add the selected item
                        terms.push( ui.item.value );
                        // add placeholder to get the comma-and-space at the end
                        terms.push( "" );
                        this.value = terms.join( ", " );
                        //get the id
                        var id = ui.term.id;
                        //copy it to another hidden element
                        $('#yourhiddeninput').val(id);
                        return false;
                }
    

    【讨论】:

    • 谢谢 ;-) 唯一的缺陷是当我添加另一个值时,它会替换 id 并且不允许多个值。
    • 我能做点什么吗: $('#yourhiddeninput').val( $('#yourhiddeninput').val() +id );让它接受多个选定的值?
    • @Tristan 您应该遵循与 Nicola 对本示例中的值执行的 ID 相同的逻辑(以逗号分隔的 ID 存储在隐藏输入的值中)。
    【解决方案2】:

    一种可能的解决方案是在表单中添加一个隐藏字段,用于存储当前选择的 ID。

    <input type="hidden" name="memberID" value="" />
    

    当使用自动完成选择一个元素时,您可以使用 select event 使用所选 ID 填充此隐藏字段。

    从菜单中选择项目时触发; ui.item 指 所选项目

    【讨论】:

      【解决方案3】:

      在您的自动完成数据中,添加 label 字段,然后将 value 字段更改为 id。

      【讨论】:

      • 刚刚测试过,但是,一旦我选择了我的第一个字符,它就会用丑陋的 id 替换值。
      猜你喜欢
      • 2011-08-03
      • 2010-09-23
      • 2014-09-29
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多