2022年04月24日

jquery:mousedown(func)

このイベントの説明

jQueryの mousedown(func) は、マウスがダウンした時点のイベント処理を記述します。

パスワードのオートコンプリート機能(自動補完)を無効化する時に利用します。

 


構文

セレクタ.mousedown(function(){イベントが発生した時の処理})

 


オートコンプリートとは?

オートコンプリートとは入力データをブラウザが記憶し、データ入力時にこの記憶データを使うブラウザ機能になります。

ブラウザ機能のため、ブラウザの種類(crome、Edige、firefox)やオートコンプリート対象が「テキスト」か「パスワード」かによって挙動が異なる事に注意してください。

 

1.テキストのオートコンプリート

1.オートコンプリートが働くケース

下記の入力BOXをクリックして文字列を入力し「送信」を繰り返してください。

そのたびにブラウザに記憶される値が増えます。

また記憶データから選択入力するとBOXの背景色が水色(chome又はEdigeの場合)になります。

データを入力してください

上記のプログラムは下記のプログラムで構成されています。

HTML部分

<form action='' method='post'>
	<p>データを入力してください</p>
	<p><input type='text' name='text' class='text' value='' size=40 ></p>
  <button type='submit' name='action'	value='input_text01'>送信</button>
</form>
<p class='msg01' style='color:red;'><?php esc_html_e($input_submit_msg); ?></p>

■3行目:<input>タグの指定

type'text' で、valueは 空白 です。

■form全体の説明はPHPのフォーム操作を参照して下さい。

PHP部分

<?php
	if($_POST['action'] == 'input_text01'){
		$text	= $_POST['text'];
		$input_submit_msg = '入力データは【'.$text.'】です。';
	}
?>

■上記は、送信ボタンが挿入された時だけ処理され入力されたデータを表示します。

   メモ:背景色を白にする方法

オートコンプリート機能でデータを入力すると、背景が水色になります。

これはブラウザがchome又はEdigeの場合で、firefoxは背景色は付きません。

これが嫌な場合はCSSで下記を指定すると、背景が白になります。

<style>
	.text{box-shadow: 0 0 0 20px white inset;}
</style>

下記は上記のCSSを設定した例です。

データを入力してください

 

2.オートコンプリートをOFFにする方法

オートコンプリートをOFFにする場合は autocomplete='off' 属性を利用します。

下記入力BOXに文字列を入力し「送信」を繰り返してください。

入力データはブラウザに保存されません。

データを入力してください

上記のプログラムは下記のプログラムで構成されます。

HTML部分

<form action='' method='post' >
	<p>データを入力してください</p>
	<p><input type='text' name='text' 	class='text' size=40 autocomplete='off'></p>
  <button type='submit' name='action'	value='input_text02'>送信</button>
</form>
<p class='msg01' style='color:red;'><?php esc_html_e($input_submit_msg); ?></p>

■3行目:<input>タグ

ここに autocomplete='off' を指定する事によりコンプリート機能をOFFにします。

PHP部分

<?php
	if($_POST['action'] == 'input_text02'){
		$text	= $_POST['text'];
		$input_submit_msg = '入力データは【'.$text.'】です。';
	}
?>

■上記は、送信ボタンが挿入された時だけ処理され入力されたデータを表示します。

 

3.保存されたオートコンプリートデータを削除する方法

Windowsでブラウザが記憶したデータを消す方法は下記になります。

オートコンプリートのデータで↓キーで削除対象を選択しshift+deleteキーで削除します。

(firefoxの場合は↓キーで削除対象を選択しdeleteキーで削除します。)

 

2.パスワードのオートコンプリート

一般的にアカウントとパスワードを保存する処理は、サーバ側で許可したユーザをブラウザ側のクッキ情報として書き込む処理で行われます。

この時に使われる関数がsetcookie()$_COOKIE[]になりますが、このサイトではこの解説は行っていません。

ここではブラウザ機能だけでアカウントとパスワードを保存させるか否かを行う機能を解説します。

 

1.パスワードを記憶させる方法

パスワードを保存させる場合は autocomplete='new-password' 属性を利用します。

この指定をすると「パスワードを保存するか」をブラウザが聞いてきます。

 

下記事例で、複数個のパスワードを記憶させてください。

[パスワード欄]をクリックするたびに、選択肢が増える事が確認できます。

アカウント:

パスワード:

上記のプログラムは下記のプログラムで構成されます。

HTML部分

<form action='' method='post'>
	<p> アカウント: <input type='text'			name='u-id01'	class='u-id01'	value=''	size='20'	autocomplete='off'></p>
	<p> パスワード: <input type='password'	name='pass01'	class='pass01'	value=''	size='20'	autocomplete='new-password'></p>
	<input type='hidden' name='position' value=''>  		<!-- 送信ボタンが挿入されて時にjQueryでValue値を設定します-->
	<button type='submit' name='action'	value='input_pass01'>送信</button>
</form>
<p class='msg01' style='color:red;'><?php esc_html_e($input_submit_msg); ?></p><!-- submit後の表示エリア -->

■2行目:<input type='text'>

アカウント単独で保存したくないので autocomplete='off'を指定しています。

■3行目:<input type='password'>

アカウントとパスワードのセットで登録したいので autocomplete='new-password' を指定しています。

PHP部分

<?php
	if($_POST['action'] == 'input_pass02'){
		$name	= $_POST['u-id02'];
		$pass	= $_POST['pass02'];
		$input_submit_msg = '【'.$name.'】と【'.$pass.'】が入力されました';
	}
?>

■上記は、送信ボタンが挿入された時だけ処理され入力されたデータを表示します。

 

2.パスワードの自動入力

ブラウザにアカウントとパスワードが記憶されると、最新のアカウントとパスワードが自動でセットされます。

アカウント:

パスワード:

上記のボックスには下記HTMLが記述されています。

<p>アカウント: <input type='text'			name='d1' value=''></p>
<p>パスワード: <input type='password'  name='d2' value=''></p>

しかし1行目を下記に変更すると、この自動入力をOFFにすることができます。

<p>アカウント: <input type='text' name='d1' value='dummy'></p>

上記ではアカウント欄にdummyが表示されるために自動入力がOFFになります。

 

3.パスワードの自動入力とオートコンプリートをOFFにする方法

下記の事例は、

①パスワードの自動入力をOFF

②パスワードのオートコンプリートもOFF

③新規パスワードも保存しない

にした事例です。試してみてください。

但し、PC版のfirefoxはオートコンプリートをOFFにすることはできません。

アカウント:

パスワード:

上記のプログラムは下記のプログラムで構成されます。

HTML部分

<form action='' method='post'>
	<p> アカウント: <input type='text'			name='u-id02'	class='u-id02'	value=' '	size=20	autocomplete='off'></p>
	<p> パスワード: <input type='password'	name='pass02'	class='pass02'	value=''	size=20 ></p>
	<button type='submit' name='action'	value='input_pass02'>送信</button>
</form>
<p class='msg01' style='color:red;'><?php esc_html_e($input_submit_msg); ?></p><!-- submit後の表示エリア -->

■2行目:<input type='text'>

アカウント単独で保存したくないので autocomplete='off'を指定しています。

value値はパスワードの自動入力をOFFにしたいために全角のスペースを入れています。

■3行目:<input type='password'>

パスワードを保存したくないので autocomplete='new-password' は指定していません。

script部分

<script>
	window.onload = function(){$(window).scrollTop(<?php esc_html_e($_POST['position']); ?>);}//画面の表示位置を指定します
	$(function(){
		$('.u-id02').mousedown(function(){$('.u-id02').attr('value','');setTimeout(function(){$('.u-id02').focus();},0);return false;}); // タイマー処理でカーソルをフィールドにセットし、return falseで終了しています。
		$('.pass02').mousedown(function(){setTimeout(function(){$('.pass02').focus();},0);return false;}); // 同上
	});
</script>

■4行目:パスワード欄のオートコンプリートのOFFの処理

オートコンプリートは、マウスがダウンした時に起動されますが、Tabキーで入力エリアに来た時は起動しません。(firefoxはtabキーでも起動するのでオートコンプリートOFFはできません)

そこで、マウスがダウンを検知した時にタイマー0秒でカーソルをフォーカスさせてfalseで返すことによりコートコンプリートの起動を阻止しています。

■3行目:アカウント欄の処理

オートコンプリートにOFF処理の前に、全角スペースを削除する処理を入れています。

PHP部分

<?php
	if($_POST['action'] == 'input_pass02'){
		$name	= $_POST['u-id02'];
		$pass	= $_POST['pass02'];
		$input_submit_msg = '【'.$name.'】と【'.$pass.'】が入力されました';
	}
?>

■上記は、送信ボタンが挿入された時だけ処理され入力されたデータを表示します。

 

4.保存されたオートコンプリートデータを削除する方法

パスワードは、URLとアカウント、パスワードのセットでブラウザに保存されます。

表示画面の中にパスワードがあるとブラウザは下記メニュを表示し、削除等はこのメニュで行います。

<chomeの場合>

<Microsoft Edigeの場合>

<firefoxの場合>

firefoxはメニュ表示ではなくオートコンプリートダイアログの中のメニュで削除します。

 


参考情報

その他の イベント発生のメソッド も参照してください。

 

関数一覧
  • 1.JavaScript/jQueryとは
  • 2.[JS] 変数規則と文字連結
  • 3.[JS] if文
  • 4.[JS] 配列操作
  • 5.[JS] 文字列操作
  • 6.[JS] 画面情報&操作
  • 7.[JS] Timer処理
  • console.log()
  • for
  • for in
  • for of
  • indexOf()
  • join()
  • length
  • map()
  • match()
  • Object.keys()
  • Object.values()
  • parseInt()
  • pop()
  • push()
  • replace()
  • shift()
  • slice()
  • split()
  • toString()
  • unshift()
  • 1.jQueryの導入と記述の基本
  • 2.jQueryの機能追加
  • 3.jQuery文法
  • 4.階層構造の要素セレクトと操作
  • 5.要素サイズ取得メソッド
  • animate()
  • append()
  • attr()
  • change(func)
  • click()
  • click(func)
  • css()
  • each(func)
  • effect()
  • empty()
  • fadeTo()
  • get()
  • hover(f1,f2)
  • html()
  • map(func)
  • mousedown(func)
  • prop()
  • resize(func)
  • show()、hide()
  • slideToggle()
  • submit()
  • submit(func)
  • text()
  • toggle()
  • toggleClass()
  • val()