2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vue.js で email のドメインを補完するやつ

Last updated at Posted at 2019-09-30

つくりたいもの

  • フォーム入力で、email の「@」以降の文字を打つと、ドメインがサジェストされる機能
  • 以下の画像のようなイメージ
スクリーンショット 2019-09-30 21.22.07.png

ソースコード

  • 以下のように datalist を使っています。
  • option の :value にメソッドを渡しているのですが、これで動くということを初めて知りました。
html
<input type="text" placeholder="hoge@example.com"
       list="suggestions" v-model="emailValue">
<datalist id="suggestions">
  <option v-for="domain in domains" :value="getSuggest(domain)"></option>
</datalist>
  • 「@」が一つだけのときに、サジェストが発動するように length === 1 をチェックしています。
JavaScript
{
  data() {
    return {
      emailValue: '',
      domains: [ 
        "@gmail.com",
        "@yahoo.co.jp",
        "@au.com",
        "@yahoo.com"
      ]
    }
  },
  methods: {
    getSuggest: function (domain) {
      if ((this.emailValue.match(/@/g) || []).length === 1) {
        const emailUserName = this.emailValue.split('@')[0]
        return emailUserName + domain
      } else {
        return null
      }
    }
  }
}

以上です。 :lemon:

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?