我需要帮助,我一直在尝试使以下案例场景起作用:您有电子邮件输入字段,您输入:foo@y - 它应该弹出自动完成框,提供 yahoo.com(例如)。如果你接受这个建议,最终值应该变成:foo@yahoo.com
我已经编写了这段代码(修改了另一个 jquery UI 示例):
$( "#tags" )
// don't navigate away from the field on tab when selecting an item
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
minLength: 3,
source: function( request, response ) {
var mail_regex = /^([\w.]+)@([\w.]+)$/;
var match = mail_regex.exec(request.term);
if (match)
var matcher = new RegExp( "^" + match[2], "i" );
response( $.grep( availableTags, function( item ){
return matcher.test( item );
}) );
},
focus: function() {
// prevent value inserted on focus
return false;
},
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( ", " );
return false;
}
});
完整的工作交互示例:http: //jsfiddle.net/rRF2s/3/
但是,它仅用 yahoo.com 替换了 foo@ - 我一生都无法弄清楚如何覆盖这种行为......
任何 Javascript/jQuery 大师 - 请帮助!如何实现这个目标?我试过这样做:return match[1]+matcher.test(item),但这不起作用。