[解決済み] iPhoneのようにHTMLテキスト入力ボックスの中にクリアボタンを設置するには?
2022-05-10 06:43:21
質問
クリックすると、<INPUT>ボックスのテキストがクリアされる、素敵な小さなアイコンを持ちたいのですが、可能でしょうか?
これは、入力ボックスの外側にクリアリンクを持つよりも、スペースを節約するためです。
CSSのスキルが弱いので...。 以下は
のスクリーンショットです。
の写真で、iPhoneがどのように見えるかを示しています。
どのように解決するのですか?
HTML5 からは
<input type="search">
. しかし、これは必ずしもカスタマイズできるわけではありません。UIを完全に制御したい場合のために、2つのキックオフの例を紹介します。ひとつはjQueryを使ったもの、もうひとつは使わないものです。
jQueryを使用した場合。
<!DOCTYPE html>
<html lang="en">
<head>
<title>SO question 2803532</title>
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$('input.deletable').wrap('<span class="deleteicon"></span>').after($('<span>x</span>').click(function() {
$(this).prev('input').val('').trigger('change').focus();
}));
});
</script>
<style>
span.deleteicon {
position: relative;
display: inline-flex;
align-items: center;
}
span.deleteicon span {
position: absolute;
display: block;
right: 3px;
width: 15px;
height: 15px;
border-radius: 50%;
color: #fff;
background-color: #ccc;
font: 13px monospace;
text-align: center;
line-height: 1em;
cursor: pointer;
}
span.deleteicon input {
padding-right: 18px;
box-sizing: border-box;
}
</style>
</head>
<body>
<input type="text" class="deletable">
</body>
</html>
jQueryを使用しない場合
jQuery は厳密には不要で、プログレッシブ拡張に必要なロジックをソースからうまく切り離すだけです。 プレーン HTML/CSS/JS を使用することもできます。
<!DOCTYPE html>
<html lang="en">
<head>
<title>SO question 2803532, with "plain" HTML/CSS/JS</title>
<style>
span.deleteicon {
position: relative;
display: inline-flex;
align-items: center;
}
span.deleteicon span {
position: absolute;
display: block;
right: 3px;
width: 15px;
height: 15px;
border-radius: 50%;
color: #fff;
background-color: #ccc;
font: 13px monospace;
text-align: center;
line-height: 1em;
cursor: pointer;
}
span.deleteicon input {
padding-right: 18px;
box-sizing: border-box;
}
</style>
</head>
<body>
<span class="deleteicon">
<input type="text">
<span onclick="var input = this.previousElementSibling; input.value = ''; input.focus();">x</span>
</span>
</body>
</html>
より醜いHTML(とクロスブラウザに対応していないJS ;)が出来上がるだけです。)
繰り返しますが、UI のルック&フィールが最大の関心事ではなく、機能性が最大の関心事であるならば、単に
<input type="search">
の代わりに
<input type="text">
. HTML5対応ブラウザでは、(ブラウザ固有の)クリアボタンが表示されます。
関連
-
vueのグローバルがscss(mixin)を導入。
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] Facebookがブラウザに統合されたDeveloper Toolsを無効にする方法を教えてください。
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み] テキストボックスのEnterキーで、JavaScriptでボタンクリックをトリガーする
-
[解決済み] 再描画のためにキャンバスをクリアする方法
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] 入力テキストボックスの値を取得する
-
[解決済み】HTMLのテキスト入力で数値入力しかできない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vueのグローバルがscss(mixin)を導入。
-
vue ディレクティブ v-html と v-text
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開