つまり、 Twitterのブートストラップ先行入力コードを変更して、記号@の前のすべてを無視する方法はありますか?したがって、ユーザーが電子メールを入力するときに@を入力したら、事前定義されたリスト(gmail.com、yahoo.com、att.netなど)からユーザーのドメインを提案する必要があります。
2317 次
2 に答える
1
いいえ、追加の魔法がないとできません。幸いなことに、この魔法はとても簡単で楽しいものです。このパズルを解くのは本当に楽しかったです:)
私が作成したこの例を考えてみましょう。
$.fn.typeahead.Constructor.prototype.select = function() {
var val = this.$menu.find('.active').attr('data-value'),
newVal = this.$element.val().replace(/@.*$/, '@' + val);
this.$element.val(newVal);
this.$element.change();
return this.hide();
};
$('#email').typeahead({
source: ['gmail', 'hotmail', 'yahoo'],
matcher: function(item) {
var m = this.query.indexOf('@'),
search;
if (!~m) {
return false;
}
search = this.query.substr(m + 1).toLowerCase();
return search.length && ~item.toLowerCase().indexOf(search);
}
});
まず、matcher
どの値が適合すると見なされるかを定義するために、カスタム関数を定義する必要があります。簡単です。複雑な部分は、入力フィールドの正しい新しい値を設定するプラグインを作成するために、Typeahead プロトタイプを変更する必要があることです。たとえばgmail
、「yahoo」ではなく、「」tomas@gmail.com
などの完全な電子メール アドレスです。
于 2012-04-11T20:13:53.143 に答える