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

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

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

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

JavaScript

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

Q&A

2回答

457閲覧

JSイベントハンドラについて

mn_fliyng

総合スコア4

onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

JavaScript

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

0グッド

0クリップ

投稿2020/08/13 00:31

編集2020/08/13 00:32

チェックボックス切替によるフォーム制御を、JavaScriptのonclickイベントハンドラで実現したいです。

(実現したいフォーム状態)
・true  :Required(入力可能)、value=''
・false :readOnly、value='*****'

試したことは①文の羅列②if文での条件分岐です。
HTML、PHP、JSで制御しています。JSで画面上での動きをつけることが目標です。
①はフォームのデフォルトが1回true⇔falseが切り替わるだけで、その後の切り替えはできません。②ではうまく効いておらず変化なしです。
コードは下記のとおりです。フォーム制御に関係する箇所を抜粋しましたが、不足ありましたらすいません。$OUTはPHPのデータ出力です。
今回passwordオブジェクト、hiddenオブジェクトは使用しない方向で考えています。よろしくお願いいたします。


<PHP> if (!$OUT['passcheck']) { $IA['pawword'] = 'true'; } <HTML> <p>パスワード</p>> <input type="text" id="password" model="Text" name="password" value="<?=$OUT['password']?>" required="true" inactive="<?=$IA['password']?>" invalid="<?=$IV['password']?>" > <P>パスチェック</p> <input type="checkbox" id="passcheck" model="Check" name="passcheck" value="1" invalid="<?=$IV['passcheck']?>" inactive="<?=$IA['passcheck']?>" <?=$OUT['passcheck'] == '1' ? 'checked' : ''; ?> >


$('passcheck').onclick = function () {
$('password').readOnly = false;
$('password').className = 'Required';
$('password').value = '';
}

$('passcheck').onclick = function () {
var d = document.getElementById('password');
if ($('passcheck') == '1' ){
d.className = 'Required';
d.value = '';
} else {
d.value = '******';
}
}

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

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

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

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

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

guest

回答2

0

ちょっと質問の意図が伝わってきませんが
passcheckのチェックありなしで、passwordのreadonlyを調整するだけならこう

javascript

1 2<script> 3window.addEventListener('DOMContentLoaded', ()=>{ 4 document.querySelector('#passcheck').addEventListener('change',(e)=>{ 5 var t=e.target; 6 var pw=document.querySelector('#password'); 7 if(t.checked){ 8 pw.removeAttribute("readonly"); 9 }else{ 10 pw.setAttribute("readonly","1"); 11 } 12 }); 13}); 14</script> 15 16<input type="checkbox" id="passcheck"> 17<input type="text" id="password" value="test" readonly>

valueとかrequireのくだりがちょっと意味不明です

投稿2020/08/13 05:08

編集2020/08/13 05:08
yambejp

総合スコア116740

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

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

0

タグにjQueryがありませんが、おそらく使われてると思うので使っています。
使ってなければ言ってください。

JavaScript

1jQuery(function ($) { 2 const password = $("#password"); 3 const passCheck = $("#passcheck"); 4 const doPassCheck = function () { 5 const isPassCheck = passCheck.prop("checked"); 6 password 7 .toggleClass("Required", isPassCheck) 8 .prop("readonly", !isPassCheck) 9 .val(isPassCheck ? "" : "**"); 10 }; 11 doPassCheck(); 12 passCheck.on("change", doPassCheck); 13}); 14

jQueryを使わないバージョン

JavaScript

1document.addEventListener("DOMContentLoaded", function() { 2 const password = document.querySelector("#password"); 3 const passCheck = document.querySelector("#passcheck"); 4 const doPassCheck = function () { 5 password.classList.toggle("Required", passCheck.checked); 6 password.readOnly = !passCheck.checked; 7 password.value = passCheck.checked ? "" : "**"; 8 }; 9 doPassCheck(); 10 passCheck.addEventListener("change", doPassCheck); 11});

投稿2020/08/13 01:39

編集2020/08/13 05:07
root_jp

総合スコア4666

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

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

mn_fliyng

2020/08/13 04:34

回答いただきありがとうございます。すいません、jQueryは使わずJavaScriptで書いています。ちなみにdは変数として個人的にいつも使ってるもので、とくにほかの表現でも構いません。補足で、トグルも使わない方法を考えておりました。
root_jp

2020/08/13 05:07

jQueryを使わないように変えたものを追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問