在JavaScript中的输入字段中按任意位置时自动建议

时间:2013-12-30 06:15:04

标签: javascript jquery ajax jquery-autocomplete

当我在输入字段中按@时,我想要电子邮件地址的自动建议 例: 当我写一些名字如“约翰”并按@然后自动建议如下:

john@gmail.com
john@yahoo.com
john@hotmail.com

任何人都可以在JavaScript中提出建议

1 个答案:

答案 0 :(得分:2)

您可以通过覆盖此answer中提到的jQuery.ui.autocomplete中的keypress事件来执行此操作。如果没有覆盖,你可能需要做很多事情,如 @ Brad's answer所示。

$(function () {
     var acList = ['gmail.com',
'yahoo.com',
'hotmail.com'
];
     var lastDot = -1;

     $("#tags").autocomplete({
         minLength: 0,
         source: function (request, response) {
             if (lastDot>=0) {
                 response($.ui.autocomplete.filter(
                 acList, extractLast(request.term.substring(lastDot+1))));          
             }
         },
         focus: function () {
             return false;
         },
         select: function (event, ui) {
             var terms = split(this.value);
             terms.pop();
             terms.push(ui.item.value);
             terms.push("");
             this.value = this.value.substr(0,lastDot+1);
             this.value += terms.join("");
             return false;
         }
     }).on("keypress", function (e) {
         var keys = [];
         keys.unshift(e.which);
         if (String.fromCharCode(keys[0]) == "@") {
             lastDot =  $("#tags").val().length;

         }
     });

     function split(val) {
         return val.split(/,\s*/);
     }

     function extractLast(term) {
         return split(term).pop();
     }
 });

JSFiddle