質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSSフレームワーク

CSSフレームワークは、Webページのスタイルを指定する言語であるCSSを容易に構築するためのツールです。ツイッター社が開発した「Bootstrap」や段組レイアウトが可能な「Foundation」など様々なCSSフレームワークがあります。

Q&A

解決済

2回答

1735閲覧

【Web】UIKitでTooltipの表示/非表示をコントロールしたい

tsurugi

総合スコア89

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSSフレームワーク

CSSフレームワークは、Webページのスタイルを指定する言語であるCSSを容易に構築するためのツールです。ツイッター社が開発した「Bootstrap」や段組レイアウトが可能な「Foundation」など様々なCSSフレームワークがあります。

0グッド

0クリップ

投稿2020/03/11 02:28

編集2020/03/11 04:40

UIKitを使ってユーザー登録画面を作成しています。

パスワードのバリデーションについて、必要に応じてinput type="password"の要素に対してtooltipで警告(そのパスワードが使えない理由)について警告するUIを作成しています。

js

1UIkit.tooltip(password_element, {title:password_incorrect_reason})

これで、パスワードが条件を満たしていないときにTooltipが表示されます。

しかし、パスワードが条件を満たしている時はTooltipを非表示にする必要があります。

公式のドキュメントを見る限り、以下のコードでTooltipを非表示にできるように思います。

js

1UIkit.util.on(document, 'beforehide', '.uk-tooltip.uk-active', function(e) { 2 if(is_password_correct){ 3 e.preventDefault(); 4 console.log("Tooltipは非表示"); 5 } 6});

しかし実際は、Tooltipは非表示は出力されますがe.preventDefault();は書き方を間違えているのかTooltipが表示されてしまいます。

ご教授のほど、よろしくお願いします。


追記:
preventService()での止め方はわからなかったものの、表示/非表示だけなら余計なことを考えず属性の操作をするのが手っ取り早かったです。

js

1//表示 2password_element.setAttribute('uk-tooltip','title:'+password_incorrect_reason) 3//非表示 4password_element.removeAttribute('uk-tooltip')

しかしpreventService()の使い方は依然としてわからないので、回答は募集したままにします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

Githubの方にissueとして登録したところ、やっぱりバグだったようです。次のバージョンではおそらく修正済みなので、解決と致します。

https://github.com/uikit/uikit/issues/4149

投稿2020/03/12 13:03

tsurugi

総合スコア89

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ツールチップが表示される前なので beforehide ではなく beforeshow でしょう。
ただ、preventDefault() を呼んでも変化がありませんでした。バグなのかドキュメントのほうに不備があるのかわかりません。
表示/非表示 は属性を書き換えてもいいですが、用意されているメソッドを呼んだほうがいいかもしれません。

JavaScript

1 UIkit.tooltip(password_element).hide();

https://getuikit.com/docs/tooltip#hide

投稿2020/03/11 06:52

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsurugi

2020/03/11 07:07

回答ありがとうございます。beforehideではなく beforeshow ですね。こっちに写す時になぜか間違えてました……。 入力に合わせてエラー内容を逐次再表示したいのですが、`.hide();` で非表示にすると、今度はなぜか `.show()` で再表示できないんですよね…。 わざわざ確認してくださってありがとうございました。
x_x

2020/03/11 07:11

こちらでは表示できますね。 show() も不要で単にフォーカスするだけなので、属性値を書き換えていないか確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問