1

つまり、 Twitterのブートストラップ先行入力コードを変更して、記号@の前のすべてを無視する方法はありますか?したがって、ユーザーが電子メールを入力するときに@を入力したら、事前定義されたリスト(gmail.com、yahoo.com、att.netなど)からユーザーのドメインを提案する必要があります。

4

2 に答える 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 に答える