Javascriptでイベントが発生しない

このQ&Aのポイント
  • Javascriptのイベントが発生しない現象について質問です。
  • 特定のコードでイベントが呼び出されない理由を教えてください。
  • また、他のイベントは正常に呼び出されるのでしょうか?
回答を見る
  • ベストアンサー

javascriptで、イベントが発生しない

下記ソースで、address1をクリップボードから貼り付けても、 function changeaddress1() がよばれないのは、 なぜでしょか? また、からなず、呼ばれるイベントはありますでしょか? ****************************************************************** <html xmlns="http://www.w3.org/1999/xhtml" pageEncoding="UTF-8"> <head> <script type="text/javascript" charset="UTF-8"> function changeaddress1() { var strAddress1 = document.zip_form.address1.value; document.write("strAddress1:"+strAddress1); } </script> </head> <body> <form action="./" id="zip_form" method="post"> <input type="text" id="address1" name="address1" onChange="changeaddress1()> </form> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5067/13241)
回答No.1

まず onChange の値ですがダブルコーテーションが閉じられていませんが転記ミスでしょうか、それとも実際のHTMLでも閉じていないのでしょうか。 ダブルコーテーションを閉じたら、関数が呼ばれていることは確認できました。 あとは、document.zip_form.address1.value では目的の値を取得できません。 (コンソールを確認したら分かると思います) document.forms.zip_form.address1.value とすれば目的の値が取得できるでしょう。

longucumber0519
質問者

お礼

ご回答ありあがとうございます。 ご指摘どおりにしたら、うまくうごきました。 大変たすかりました。

その他の回答 (1)

  • tracer
  • ベストアンサー率41% (255/621)
回答No.2

input要素に入力キャレットがある(選択されている)状態を、「フォーカス(focus)」と言います。そして、その逆(非選択にする状態)を「フォーカスが外れる」と呼べます。 さて、onChangeは、フォーカスがある状態から、フォーカスが外れた時に発生するイベントです。同じタイミングで発生するするイベントにonBlurがありますが、それとの違いは「値が変わったかどうか」です。つまり、onChangeは、フォーカスが外れたタイミングで値が変わっていればイベントが動きます。従って、値をペーストしたタイミンではイベントは発生しません。 もし、ペーストしたタイミングでイベントを呼びたいのであれば、keyupやkeydownが妥当でしょう。ただし、ブラウザによって挙動が別れる部分があるので、十分にテストした方がよいと思います。

longucumber0519
質問者

お礼

ご回答ありがとうございます。 onChangeイベントは、発生しませんでした。おそらく、人間が入力しないとだめなようです。 結局、うまく動いたのは、hTML表示時に強制的に、onFocusイベントを発行することです。 どのブラウザでも、サーバーでも動いたので、完成です。

関連するQ&A

  • JSPでonKeyイベントを強制実行したい

    JSPで下記で困っています。 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript" src="http://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3.js" charset="UTF-8"></script> </head> <body> <form action="./" method="post"> <input type="hidden" name="zip"" value="032345" onChange="AjaxZip3.zip2addr('zip','','address1');"><br> <input type="text" name="address1" size="60"> </form> </body> </html> <% // 1.onChageイベントを強制的に発行させたい。 // 2.address1の値をStringに取り込みたい。 %>

  • INPUTタグ以外からイベントハンドラを起動する方法

    はじめまして。 いろいろ調べたのですが、的確な答えが見つかりませんでしたので、ご教授お願いいたします。 訳あってonchangeイベントをタグの外から起動したいのですが、関数に括弧を付けると「実装されていません」というエラーが出てしまいます。 括弧を付けていない関数はうまく起動します。 どうしても関数に引数を渡してあげたいのですが、どのようにすればよいのでしょうか? 動作環境は IE5.5 windows2000 ASPにてJavaScriptを作成しています。 以下ソースを簡略化して記述しました。 よろしくお願いいたします。 <html> <head> <script TYPE="text/javascript"> <!-- function f_AAA(){ alert("AAA"); } function f_BBB(a_value){ alert(a_value); } --> </script> </head> <body> <form> <input type="text" name="text1" value="1"> <input type="text" name="text2" value="2"> <script TYPE="text/javascript"> <!-- // ↓括弧の付いていない関数は起動します。 document.forms[0].text1.onchange = f_AAA; // ↓括弧の付いている関数は起動しません。 document.forms[0].text2.onchange = f_BBB("OK"); --> </script> </body> </form> </html>

  • 次のJavaScript

    <HTML> <HEAD> ・・・・・・・・・・・・・・・・ <script type='text/javascript'> <!-- function FormFocus() { document.form0.title.focus(); <-----error } // --> </script> </HEAD> <body onload='FormFocus()'> <form name='form0' method='post' action='http://hpcgi.nifty.com/xxxx/mypage.cgi#form'> ・・・・・・・・・・・・・・・・ </body> </HTML> がerrorとしているところでエラーになります 何か間違いあれば教えてください

  • onchangeイベントを強制的に発生させる

    お世話になります。 onchangeイベントをjavascriptで強制的に動作させたいと思っております。 発生させたい場合 ・ユーザーがtextボックスを入力 ・リンクボタンを押下した場合 簡単なことなのかもしれませんが、 ご教授よろしくお願いいたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <script type="text/javascript"> function change(){ alert('test'); } function update(){ document.getElementById('1').value = "update"; document.getElementById('1').onchange = change; } </script> <input id="1" type="text" value="1" onchange="change();"> <a href="javascript:update();">update</a>

  • JavaScript表示切替の問題

    ボタンを押すたびに、こんにちはとこんばんはが切り替わるようにしたいのですが、 切り替わりません。なぜかわかる方がいたら教えて頂けると助かります。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> <body> <div id="1">こんにちは</div> <input type="button" value="切替" onclick="func_switch()"> <script language="javascript" type="text/javascript"> function func_switch(){ if(document.getElementById(1).innerHTML="こんにちは"){ document.getElementById(1).innerHTML="こんばんは"; } else{ document.getElementById(1).innerHTML="こんばんは"; } } </script> </body> </html>

  • formのsubmitイベントの発生についての質問です。

    formのsubmitイベントの発生についての質問です。 あるところで、「form.submit() は submit イベントを発火しない」 とあったので、 ↓のscriptで、formのsubmitイベントを調べていました。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>SessionTestNext</title> <style type="text/css"></style> <script type="text/javascript"> function send1(elm){  elm.form.submit(); } function send2(){  document.getElementById("form1").submit(); } if('undefined' !== typeof document.addEventListener){  document.addEventListener('submit', function(event){   var target = event.target;   alert(target.id);  }, false); } else if ('undefined' !== typeof document.attachEvent){  document.attachEvent('onSubmit', function(event){  var target = event.srcElement;  alert(target.id);  }); } </script> </head> <body> <p>SessionTestNext 1 </p> <form id="form1" action="/php/session2.php" method="post" onsubmit="alert('Submited!');return false;"> <input type="text" name="parm2" value="fugafuga"> <input type="submit" value="サブミット"> <button onclick="send1(this)">Javascriptサブミット(1)</button> </form> <button onclick="send2()">Javascriptサブミット(2)</button> </body> </html> だのに、 send1()を実行した時は、イベントが検知され'Submited!'がアラートします。 ただし、onsubmitのハンドラーでfalseを返してるので、サブミットしません。 send2()を実行した時は確かに、submitイベントは発生せず、'Submited!'の アラート無しで、実際サブミットされます。 documentにaddEventListenerで追加したハンドラーの方でも、send1()の 時だけ検知され'form1'がアラートします。  send1()で検知されるのは何故でしょう? また、IEでも同様の動作なんですが、何故か document.attachEvent('onsubmit', の方が、まったく動きません。(タイポかも)

  • VBSからjavascript

    下記ソースの指定の箇所からjavascriptのfunction fun1(1)をよびたいのですがどう記述したらいいでしょうか。 (ちなみにbody onload=は使わない条件です) <%@ LANGUAGE = VBSCRIPT %> <html> <head> <script type="text/javascript"> <!-- //禁止、許可 function fun1(is){ var is; var i; var jj; jj=document.form1.text2.length; for (i=0;i<jj;i++){ if (is==1) document.form1.text2[i].disabled=true; if (is==2) document.form1.text2[i].disabled=false; } } //--> </script> </head> <html> <body> <form name="form1"> <input type="text" name="text2" size="14" maxlength="8" value="ABC"> <input type="text" name="text2" size="14" maxlength="8" value="DEF"> <% <-------------------ここでfun1(1)をよびたい fun(1)と書いてもエラー >% </form> </body> </html>

  • JavaScriptのロジック?

    <HTML> <HEAD> <TITLE>JavaScript</TITLE> <SCRIPT type="text/javascript"> <!-- /* 同じ値を二重表示 */ function funDouble(){ alert( document.SampleForm.nameOne.value ); document.SampleForm.nameTwe.value = document.SampleForm.nameOne.value + document.SampleForm.nameOne.value; alert(document.SampleForm.nameTwe.value); } // --> </SCRIPT> </HEAD> <BODY> <form name="SampleForm" method="POST"> <table align="center"> <TR> <TD>OnClick機能 : <Input type="text" name="nameOne" value="Ok"><Input type="submit" value="押して!" onclick="funDouble()" ></TD> <TD>| 結果 => | </TD> <TD> OnChange後 同じ値を2重表示 ; <Input type="text" name="nameTwe" value="123456"></TD> </TR> </table> </form> </BODY> </HTML>

  • 画像のソースを変える(JavaScript)

    <html> <head> <script language="javascript"> <!-- function Karasu() { document.forms[0].elements[0].value = "からす"; }// --> </script> </head> <body onload="Karasu()"> <form> <input type="text"><br> </form> </body> </html> ソースの「document.forms[0].elements[0].value」のように画像のソースを書き換えて違う画像を表示させることはできませんか? name属性を使わずにお願いします。 また、他のもっと良い考え方で画像を動的に変更する方法があれば教えてください!

  • disabledの点で。2

    また同じソースでの質問なのですが、以下のようなソースで、1のテキストボックスに過去に入力したもの(プルダウンみたいに下がって出てくる履歴のようなもの)を選択すると、2の方の入力ができなくなります。履歴の数字を入れても2の方に記入できるようにするにはどのようにしたら良いのでしょうか。また、これらの処理を行うとき、onChange以外のものを使ってできるのでしょうか?大変困っております、よろしくお願いします。 <html> <head> <title></title> <script language="JavaScript"> <!-- function setTF(){ if(document.form1.text1.value=="") document.form1.text2.disabled = true; else document.form1.text2.disabled = false; } //--> </script> </head> <body> <form name="form1"> 1<INPUT type="text" name="text1" onChange="setTF()"> 2<INPUT type="text" name="text2" disabled> <INPUT type="submit" value="登録" onClick="return setTF()" name="submit"> </form> </body> </html>

専門家に質問してみよう