• ベストアンサー

テキスト入力後、エンターを押すことで関数を実行するには

 formのtextエリアに値を入力し、その隣に配置したボタンでその値を利用した 関数を実行することはできます。しかし、誤ってtextエリアでエンターを押してしまうと、 入力値が消えて何かが実行されているようですが、何も起きません。  参考書などを見て、onchangeかonBlurでも使えばよいのかと思い試してみましたが、だめです。  textエリアでクリックすることで、その値を利用した関数を実行できる=隣のボタンを クリックすることと同様の動作を実現するにはどうしたらよいのでしょうか。 《サンプル》 <input type = "text" name="text"> <button onClick ="xxxx()"> 実行 </button>  ※上のtextのvalueを元に実行するのが下のボタンの"xxxx()"

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

>CGIの部分がわかりません。このまま記述したら、xxxx.cgiへのリンクと見なされて、404エラーが出ます。 ですね。formのaction属性は「submitされた時に飛ぶ場所」を書くので、飛ぼうとした先が無ければ404エラーです。 >xxxx.cgiを作る必要があるということですね?でも私にはそこが分かりません。CGIは全く勉強していませんので。 うむ~、本当は「仕様の上ではaction属性が無いformタグは挙動が保証されない」のだけど、たいていのブラウザは「保証は無いけどそれなりに動いちゃう」ので、次のように直せば動くかな? <form onSubmit="return xxxx()"> <input type="text" name="text> <input type="submit" value="実行"> <form> 繰り返すけど「たいていは動くだろうけど、全てのブラウザでうまく行く保証はない」ので注意。

babusan
質問者

お礼

 再びの回答、ありがとうございました。  思ったとおりの動作が実現しました。ただ、言われるような「問題点」があることはきちんと覚えておきます。  大変助かりました。

その他の回答 (2)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

typeにtextを指定したinputでEnterキーを押すと、inputタグの外側にあるformタグのaction属性で指定したアクションが実行されます。 つまり<input type=submit value="OK">のボタンを押したのと同じ動作になります。 で、もし、formタグにaction属性が無い場合(action属性は「必須属性」なので、無いのは許されないんだけど)は「テキストエリアでEnterを押すと何も起きないで、入力値が消える」と言う事になります。 以下のように修正しましょう。 <form method="post" action="xxxx.cgi"><!-- xxxx.cgiはxxxx()関数を呼ぶCGI --> <input type="text" name="text><!-- Enterを押すとxxxx.cgiが呼ばれる --> <input type="submit" value="実行"><!-- クリックするとxxxx.cgiが呼ばれる。<button onclick="xxxx()">実行</button>の代わり --> <form>

babusan
質問者

お礼

 回答ありがとうございます。  CGIの部分がわかりません。このまま記述したら、xxxx.cgiへのリンクと見なされて、404エラーが出ます。  xxxx.cgiを作る必要があるということですね?でも私にはそこが分かりません。CGIは全く勉強していませんので。

noname#39970
noname#39970
回答No.1

onkeyup でenterを判別して関数を呼ぶ

babusan
質問者

お礼

 指摘していただいたことを自分なりに勉強した結果、 function enterchk(){  if(document.f1.answer.onkeyup.which == 10){xxxx();}  という関数を作り、formタグに <form name="f1" action = "enterchk()">  と書けばよいのかと思いました。でもこれでは動きません。 どこが間違っているのでしょうか。

関連するQ&A

  • ENTERについて

    <INPUT TYPE="TEXT" NAME="no" SIZE="10" MAXLENGTH="8"> というtextエリア内でenterキーを押した時に、 <INPUT TYPE="button"VALUE="Go!"onClick="openWin0003( '2','./test.html')"> と同じ処理を行うようにするにはどのように記述すれば いいのでしょうか? textエリア内で、enterキーを押した時に任意のfunctionが実行されるにはどのようにするのかということなのですが・・・。 よろしくお願いします。

  • テキストボックスに入力した色に背景色を変える

    教えてください。 テキストボックスに入力されたカラーコード又はカラーネームに背景色を変更させたいのですが、onchangeを使えばいいのはわかるのですが、入力された値をどうやって表示されるかよくわかりません。ボタンを使って変更させるのはわかるのですが…。 よろしくお願いいたします。

  • フォーカスが外れた時の入力チェックの仕方

    htmlで書かれたテキストエリアのフォーカスが外れた時に、 入力チェックを行いたいのですが すでに <input type=text name=abc value=""> というinputタグが存在していて このタグに手を加えずjavascriptを使い どうにかテキストエリアabcのフォーカスが外れた時に、 入力チェックを行いたいです 要するに htmlで<input type=text name=abc value="" onblur="関数名"> っと書く事が出来ないという状況です。 全く案が思い浮かびません 何かいい案がおありでしたらよろしくお願い致します

  • 指定入力桁数が入力されたら、ボタンを使用可能にする方法

    Javascriptで質問です。 業務でWebアプリケーションを作成しています。 その仕様の中に、 「ID欄を指定桁数入力されたらボタンを使用可能にする」 と言う仕様があります。  <例>------------------------------------------------------ ※IDテキストボックス(1)~(3)全て4桁入力された(計12桁)場合のみ   実行ボタンが使用可能になる。   ID(1)  ID(2)  ID(3)   [aaaa] [bbbb] [cccc]  ⇒ [実行ボタン]使用可能 -------------------------------------------------------- 現在は、onblurイベントでID(1)~(3)からフォーカスが離れたタイミングでID(1)~(3)の値をチェックして全ての値(計12桁)入力されていた場合は実行ボタンをdisatble="true"にしているのですが、onblurイベントの為、ID(3)を4桁入力したタイミングで実行ボタンを使用可能にすることができません。 分かりにくい説明ですいません。 ようはID(1)~(3)に12桁入力されたタイミングで実行ボタンが使用可能になり、ID(1)~(3)が12桁以外が入力されたタイミングで実行ボタンを使用不可にしたいです。 Javascriptでテキストボックスに何桁入力されたら実行されるイベントみたいなものはありませんかね??

  • PHPの関数実行

    <?php function disp(){ echo "hello world"; } ?> <form> <input type="text"> <input type="button" onclick="<?php disp() ?>"> </form> といったソースを書いてみたのですが、ボタンを押してみるのですが作動しません。 どこか間違えているのでしょうか、それとも作動しないのでしょうか・・・。 当方としては、formのinputボタンを押したらPHPの関数が実行させるようにしたいのですが・・・。 どなたかご助言をお願いします。

    • ベストアンサー
    • PHP
  • フォームに表示される文字をセンタリングさせたい。

    Javascriptの初心者です。宜しくお願いします。 テキストエリアが2つあったとします。 1のテキストエリアにある値を入力してボタンを押すと、 2のテキストエリアに1で入力した値をそのまま表示させ、 尚且つ表示された値をフォーム内でセンタリングさせたいのですが どうすればよいのかわかりません・・・。 ご存知の方がいらっしゃいましたら教えて下さい。 どうぞ宜しくお願い致します。 <html> <head> <script language="JavaScript"> <!-- function my1() { a=document.form1.text1.value; document.form1.text2.value=a; } //--> </script> </head> <body> <form name="form1"> <input type="texterea" name="text1"> <input type="texterea" name="text2"> <input type="button" value="CLICK!" onClick="my1()"> </form> </body> </html>

  • テキストエリアでの処理に関して

    あるテキストエリアの中で、OnDbclickイベントでダブルクリック した場合にサブウィンドウを開き、サブウィンドウの中であるDBから 情報を取得し、親ウィンドウの隣のテキストエリアに値を表示するような事をしていますが、ダブルクリック以外でもそのテキストエリアに入力があったらDBを検索するような仕組みを考えています。 基本的には文字数制限をし、6文字入力された時点でDBへ検索しに 行くような形にしたいと考えています。 そもそも同じテキストエリアでダブルクリックはサブウィンドウ、 入力後は他の処理というような事が可能なのでしょうか。。。 どういった記述をすれば良いか教えて下さい。 よろしくお願いします。

  • テキストボックスに関して質問です

    ページ間でのテキストボックスからテキストボックスへの文章の移行って可能でしょうか? tezt1.htmlってページにある 名前⇒<INPUT TYPE="text" NAME="name1"> 住所⇒<INPUT TYPE="text" NAME="adres1"> のテキストボックスに入力された文章を 入力ボタン <INPUT type="button" value="入力" onClick="・・・・・"> を押すと、下に用意してあるテキストボックス(別ページ)に入力した値が入るようにしたいのです。 tezt2.htmlの 名前⇒<INPUT TYPE="text" NAME="name2"> 住所⇒<INPUT TYPE="text" NAME="adres2"> 事情が有り一つのページで行えません。 フレームわけしたページで移行して使用したいのですが… 質問し方が悪くて大変申し訳有りません。宜しくお願いします。

    • ベストアンサー
    • HTML
  • DOMによる、テキストエリアの内容の書き換え

    以下コードを記述し、test.htmlで保存しました。 「ボタンがクリックされたとき、テキストエリアボックスの内容が書き換わる」 と言うことを想定し、作成してみました。 ところが、ボタンをクリックしても、テキストエリアが書き換わりません。 elm[0].Valueでは、駄目なのでしょうか。 ボタンをクリックしたとき、関数までは動いていることは確認できたのですが。 (alertで確認済み) ご教授お願いします。 ==========以下内容====== <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>テキストエリア書き直し</title> </head> <body> <h1>テスト</h1> <p>テキストエリアの書き換え</p> <script type="text/javascript"> <!-- function syutoku(){ var elm=document.getElementsByName('textarea1'); elm[0].Value="書き直し"; //alert(elm[0]); } --> </script> <hr> <p>テキストエリアを書き直します。</p> <form name="form1"> <p><input type="button" value="ボタン" onClick="syutoku()"></p> <p><textarea cols="40" rows="4" name="textarea1"> テキスト書き直しエリア</textarea></p> </form> <hr> </body> </html>

  • 【FireFox】サブウィンドウ表示とテキストボックス値

    メインのウィンドウにテキストボックスとボタンがあり、 ボタンをクリックするとjavascriptによりサブウィンドウ が開くHTMLがあります。 しかし、FireFoxに限り、ボタンを押してサブウィンドウ を開くとメインのHTMLのテキストボックスに入力していた 値が消えてしまいます。 ================ main.html ===================== <html> <head> <script Language="JavaScript"><!-- function openSubWin(){ window.open("sub.html","window","width=300,height=300"); } // --></script> </head> <body> <form action="#" name="myform"> <input type="text" name="no"> <button id="button1" onclick="openSubWin();" >サブウィンドウ</button> </form> </body> </html> ================== サブウィンドウ ================ <html> <body> サブウィンドウ </body> </html> IEでは問題ありませんでした。 何か解決方法はありますでしょうか? 宜しくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう