• 締切済み

検索欄を設けキーワードを入力後Enterを押すと検索されずに同じ画面が表示される

JavaScriptとperlとMySQLでデータベース内を検索するような仕組みを作りました。が動作が上手くいきません。 「うまくいかない点」 フリーワード検索欄を設けキーワードを入力後Enterを押すと検索されずに同じ画面が表示される 「仕掛け」 1.ラジオボタンで検索の種類を選んでもらいます。 <INPUTtype="radio"name="r_b"VALUE="F"checked> <INPUTtype="radio"name="r_b"VALUE="A"> 2.検索ボタンをクリックした際にヘッダーに書かれているJavaScriptで振り分けてCGIファイルに飛びます。 <SCRIPT> functionsend(){ vari; if(document.form_a.r_b.length){ for(i=0;i<document.form_a.r_b.length;i++){ if(document.form_a.r_b[i].checked){ varck_b=document.form_a.r_b[i].value; } } }else{ if(document.form_a.r_b.checked){ varck_b=document.form_a.r_b.value; } } if(ck_b=="A"){ document.form_a.action=""+document.form_a.KENSAKU.value; document.form_a.submit(); }elseif(ck_b=="F"){ document.form_a.action=""+document.form_a.KENSAKU.value; document.form_a.submit(); } } </SCRIPT> 上記のような感じです。 最初はこれでも良いかと思ったのですが、結局どこのサイトでもフリーワード欄にキーワードを入力した後にわざわざ検索ボタンをクリックするのではなくエンターキーを使用している事に気がつきました。 また、そのほうが使用頻度が多い方にとって良いと思いいろいろ考えたのですが、良い知恵が浮かびませんでした。 どうか良きアドバイスをいただけないでしょうか? お願いします。

  • aeic
  • お礼率10% (60/582)

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

#1はqが渡らないので改訂版 <form action="http://www.google.co.jp/search"> <input type=hidden name=q> </form> <form action="http://search.goo.ne.jp/web.jsp"> <input type=hidden name=MT> </form> <form onsubmit="return myfunc(this)"> <input type=text name=q> <input type=radio name=rb1 value=0>google.com <input type=radio name=rb1 value=1>goo.ne.jp <input type=submit> </form> <script> function myfunc(frm) { for(i = 0; i < frm.rb1.length; i++){ if(frm.rb1[i].checked){ document.forms[i].elements[0].value = frm.q.value; document.forms[i].submit(); return false; } } return false; } </script>

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

前の質問も含めてこんな感じ <form onsubmit="return myfunc(this.rb1)"> <input type=text name=q> <input type=radio name=rb1 value="http://aaa">aaa <input type=radio name=rb1 value="http://bbb">bbb <input type=submit> </form> <script> function myfunc(rb) { for(i = 0; i < rb.length; i++){ if(rb[i].checked){ //alert(i); location.href = rb[i].value; return false; } } return false; } </script>

aeic
質問者

補足

ご回答頂き本当にありがとうございました。 上記プログラムだと <input type=text name=q> にフリーワードの言葉が入れられると判断しました。が、そのフリーワードの言葉をパラメータで渡したい場合どのような書き方になるのでしょうか? ご教授いただけないでしょうか? お願いします。

関連するQ&A

  • ジャバスクリプトを入れるとCGIエラーが出てします。

    下記のような感じでプログラムしてみたのですがどうしてもCGIエラーが出てしまいます。 何か打開策などございましたら教えて頂けないでしょうか?お願いします。 $Head=$Head.qq{ <script> function send(){ //どのラジオボタンがチェックされたか判定 var i; if (document.form_a.r_b.length) { for (i = 0; i < document.form_a.r_b.length; i++) { if (document.form_a.r_b[i].checked) { var ck_b = document.form_a.r_b[i].value; } } } else q{ if (document.form_a.r_b.checked) { var ck_b = document.form_a.r_b.value; } } //チェックされたボタンから遷移先を分ける if(ck_b=="A"){ document.form_a.action="http://www.***.co.jp/cgi-local/J_S001.cgi?ff_flg=2&free=" + document.form_a.KENSAKU.value; document.form_a.submit(); }else if(ck_b=="B"){ document.form_a.action="http://www.***.co.jp/cgi-local/H_S001.cgi?ff_flg=2&day_flg=1&free=" + document.form_a.KENSAKU.value; document.form_a.submit(); } else if(ck_b=="F"){ document.form_a.action="http://www.***.co.jp/cgi-local/SearchJobOffer1b.cgi?ff_flg=2&free=" + document.form_a.KENSAKU.value; document.form_a.submit(); } } </script> };

  • javascriptでラジオボタンのが変更できない

    javascriptを勉強中なのですが 練習で下記のような麻雀の計算をしてくれるサイトを作ってみましたがうまく反応しません。 http://tegarude.sakura.ne.jp/mafu/form.html できない点は、例えば、ロンの項目で面前のチェックの時、ツモの項目にいいえが入りますが、 その後、ツモの項目で平和のチェックをいれようとしてもチェックが入りません。 javascriptで操作するようにしたのですがどうもうまくいきません。 単純なこと簡単なことなのかもしれませんが どなたかご教授願えませんでしょうか? ソースコードが長いのでjavascriptの記述のみ載せています。 サンプルのURLを参考にして下さい。 function on(){ //ロン・ツモ・待ち・雀頭の値を取得 function mjk01(m1,m2){ for (j=0; j<m1.length; j++){ if(m1[j].checked){ m2.innerHTML=m1[j].value; } } } mjk01(document.form1.radio2,document.getElementById("a00")); mjk01(document.form1.radio3,document.getElementById("a01")); mjk01(document.form1.radio4,document.getElementById("a02")); mjk01(document.form1.radio5,document.getElementById("a03")); //formプロパティの省略 formt=document.form1; //ロン項目設定 if(formt.radio2[0].checked){ formt.radio3[3].checked=true; formt.radio7[0].checked=true; formt.radio9[0].checked=true; formt.radio11[0].checked=true; formt.radio13[0].checked=true; } if(formt.radio2[1].checked){ formt.radio3[3].checked=true; formt.radio4[0].checked=true; formt.radio5[2].checked=true; formt.radio6[0].checked=true; formt.radio8[0].checked=true; formt.radio10[0].checked=true; formt.radio12[0].checked=true; } if(formt.radio2[2].checked){ formt.radio3[3].checked=true; } //ツモ項目設定 if(formt.radio3[0].checked){ formt.radio2[3].checked=true; formt.radio4[0].checked=true; formt.radio5[2].checked=true; formt.radio6[0].checked=true; formt.radio8[0].checked=true; formt.radio10[0].checked=true; formt.radio12[0].checked=true; } if(formt.radio3[1].checked){ formt.radio2[3].checked=true; formt.radio4[0].checked=true; formt.radio5[2].checked=true; } if(formt.radio3[2].checked){ formt.radio2[3].checked=true; } //面子の設定 function mentsu(m1,m2,m3){ if(m1[0].checked){ m2[1].value=4; m2[2].value=16; m2[3].value=8; m2[4].value=32; } if(m1[1].checked){ m2[1].value=2; m2[2].value=8; m2[3].value=4; m2[4].value=16; } for(i=0; i<m2.length; i++){ if(m2[i].checked){ m3.innerHTML=m2[i].value; } } } mentsu(document.form1.radio7,document.form1.radio6,document.getElementById("a04")); mentsu(document.form1.radio9,document.form1.radio8,document.getElementById("a05")); mentsu(document.form1.radio11,document.form1.radio10,document.getElementById("a06")); mentsu(document.form1.radio13,document.form1.radio12,document.getElementById("a07")); //小計をすべて数字に変換 num0=document.getElementById("a00").innerHTML; num1=document.getElementById("a01").innerHTML; num2=document.getElementById("a02").innerHTML; num3=document.getElementById("a03").innerHTML; num4=document.getElementById("a04").innerHTML; num5=document.getElementById("a05").innerHTML; num6=document.getElementById("a06").innerHTML; num7=document.getElementById("a07").innerHTML; num0 = parseFloat(num0); num1 = parseFloat(num1); num2 = parseFloat(num2); num3 = parseFloat(num3); num4 = parseFloat(num4); num5 = parseFloat(num5); num6 = parseFloat(num6); num7 = parseFloat(num7); //総合計の算出 document.getElementById("total").innerHTML=num0+num1+num2+num3+num4+num5+num6+num7; }

  • ラジオボタンの入力制御について(表示した時のみ制御を行う)

    yesの場合はid=ABを表示し、noの場合はid=ABを非表示にする制御を行っています。 両方yesの場合は表示。両方noの場合は非表示。 片方がnullの場合は、yesで表示しnoで非表示としています。 ここまでの動作は、問題ないのですが id=ABを表示した場合、hoge3が入力必須となり id=ABを表示しない場合、hoge3は入力必須ではないように制御を行いたいと思っています。 他書き込みを参考にしたのと、自身で書いたものが混じって非常に汚くなっていますが ご教授願えませんでしょうか。 <script type="text/JavaScript"> <!-- function test1(){ if(document.getElementById("id01").checked) { document.getElementById('AB').style.display = ""; }else if(document.getElementById("id02").checked) { document.getElementById('AB').style.display = ""; for(i = 0; i <= 1; i ++){ document.form1.hoge3[i].checked = false; } }else{ document.getElementById('AB').style.display = "none"; for(i = 0; i <= 1; i ++){ document.form1.hoge3[i].checked = false; } } } //以下はhttp://oshiete1.goo.ne.jp/qa2119460.htmlを参考にしました function test2(f){ for (var i=0;i<f.length;i++){ if(f[i].type=="radio" && f[i].name=="hoge3" && f[i].checked==true) return true; } alert("AかBを選んでください"); return false; } //--> </script> <form name="form1" onload="test1()"onsubmit="return test2(this)"> <br> <input type="radio" name="hoge1" value="1" id="id01" onClick="test1();">yes<br> <input type="radio" name="hoge1" value="0" onClick="test1();">no<br> <br> <input type="radio" name="hoge2" value="1" id="id02" onClick="test1();">yes<br> <input type="radio" name="hoge2" value="0" onClick="test1();">no<br> <br> <p id="AB" style="display:none;"> <input type="radio" name="hoge3" value="1">Aへ進む<br> <input type="radio" name="hoge3" value="2">Bへ進む<br> </p> <br> <input type="submit" value="次へ"> </form>

  • ラジオボタンの選択で解答・点数を表示する

    10問のテストを作成しています。 (1)選択肢はラジオボタンで3択(正解は10点、その他0点) (2)採点をクリックすると、テキストボックスに○×の結果を出し、もう一つ別のテキストボックスに×の場合は正しし解答を表示 (3)アラートで「あなたの点数は~~点」と出す (4)FORM1.2のSCOREに点数を表示 以上のようにしたいと思い、下記のように作りました。 まだ初心者のため、長々と同じことを書くことしか分からないので、もっと簡単にまとめられる方法がありましたら、教えてください。 よろしくお願いいたします。 function dispscore() { var score=0; if (document.form1.q0[0].checked) { score += 10; document.form1.r0.value = "○"; } else{ document.form1.r0.value = "×"; document.form1.a0.value = "ナイル川"; } if (document.form1.q1[2].checked) { score += 10; document.form1.r1.value = "○"; } else{ document.form1.r1.value = "×"; document.form1.a1.value = "バチカン市国"; } alert("点数は " + score + " 点 です "); document.form1.score.value=score document.form2.score.value=score } ------------------------------------------------------------ <INPUT type=radio name="q1" value="10">ナイル川 <INPUT type=radio name="q1" value="0">ミシシッピー川 <INPUT type=radio name="q1 value="0">アマゾン川> <INPUT size="3" name="r1" type="text"> <INPUT size="25" name="a1" type="text"> <INPUT type=radio name="q2" value="0">バルカン市国 <INPUT type=radio name="q2" value="0">バルタン市国 <INPUT type=radio name="q2" value="10">バチカン市国 <INPUT size="3" name="r2" type="text"> <INPUT size="25" name="a2" type="text">

  • クイズの正解(○×)をテキストボックスに出す方法は・・・

    ラジオボタンで2択のクイズを作成しています。最後に「計算」ボタンを押すと点数は出ます。あと!ラジオボタンの横にテキストボックスを設置して、正解なら「○」、不正解なら「×」と出るようにしたいのですが・・・ ぜひ教えてください。 よろしくお願いいたします。 <SCRIPT language="JavaScript"> <!-- function displayScore() { var score = 0; for(i=0;i<=20;i++){ if(document.form1.elements[i].checked){ score += parseInt(document.form1.elements[i].value); } } document.form2.SCORE.value=score window.alert(" あなたの点数は " + score + " 点です"); }

  • for ( i = 0; i ・・の使い方?

    下記は普通に動きますが、ラジオボタンの内容をデータベースによって変更しているためボタンが1個だけの場合があります。その場合にもエラーにならない書き方についてアドバイスいただけないでしょうか。 <SCRIPT language=JavaScript> function set( n ) { for ( i = 0; i < document.main.shori.length; i++ ) { if ( document.main.shori[i].checked ) { shori_value = document.main.shori[i].value } } alert(shori_value) } </SCRIPT> <body onLoad="set(0);"> <FORM NAME=main> <INPUT TYPE="RADIO" NAME="shori" VALUE="1" onClick="set(0);" CHECKED>1  <INPUT TYPE="RADIO" NAME="shori" VALUE="2" onClick="set(1);">2 </form>

  • javascriptによる動的なリンクの変更

    javascriptによって、ラジオボタンをチェックする度に(チェックを変える度に) 動的にリンクを変更したいのですが、上手くいきません。 すみませんが、どなたか教えていただけないでしょうか? ちなみに、下記は私が試したコードです。(全く動きませんが。) ラジオボタンのチェックを変えると、<a>タグのhrefの中身のURLが、そのボタンのvalueに対応して変わるようにしたいのですが。。 <FORM NAME="sample"> 選択して下さい -->  <input type="radio" name="list" OnChange="UpdateLink()" value="http://www.yahoo.co.jp" />s <input type="radio" name="list" OnChange="UpdateLink()" value="http://www.vector.co.jp/authors/VA011407/" />m <input type="radio" name="list" OnChange="UpdateLink()" value="mailto:akirayu@a2.mbn.or.jp" />l <A href="samplelink">リンク更新!!</A> </FORM> <SCRIPT LANGUAGE="JavaScript"> <!-- var pos; for(var i=0; i < document.links.length; i++) { if (document.links[i].href.indexOf("samplelink") != -1) pos = i; } function UpdateLink() { checked = document.sample.list.checked Index; document.links[pos].href = document.sample.list[checked ].value; } //--> </SCRIPT>

  • ラジオボタンについて

    つまらない質問ですがどうか教えてください。 <form name="myform"> ・ ・ ・ <INPUT TYPE="RADIO" NAME="R1" VALUE="1">関連あり</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="2">関連なし</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="3">不明</INPUT> </form> 上記のようなラジオボタンを作ったのですが、 このラジオボタンのチェックされた値を取得するには document.myForm.cGyoumu.value ではできないのでしょうか? LOOPさせながらdocument.myForm.elements(i).checked で探さないと取得できないのでしょうか? 同じフォーム内にラジオボタンが複数あるため、 この方法はあまりやりたくありません。 ほかに方法がありましたら、どうか教えてください。

  • 複数のラジオボタンのチェック

    複数のラジオボタンが全て選択されているかどうかのチェックのJavaScriptをすっきりした形で書くのは、どうしたらいいでしょうか? 下記のようですと、ダラダラと記述するようになってしまいます。 どなたかご教授ください。 --------------------------------------- <script type="text/javascript"> function insert_onClick() { j=0; for (i=0 ;i < document.F1.a11.length ; i++){ if (document.F1.a11[i].checked) { j=1; } } } </script> <form action="check.php" name="F1" onsubmit="return insert_onClick()"> 各valueは0~4まであります <input type="radio" name="a11" value="0"> <input type="radio" name="a12" value="0"> <input type="radio" name="a21" value="0"> <input type="radio" name="a22" value="0"> <input type="radio" name="b11" value="0"> <input type="radio" name="b12" value="0"> <input type="radio" name="b21" value="0"> <input type="radio" name="b22" value="0"> ---------------------------------------

  • チェックボックスの選択チェック

    ラジオボタンの選択チェック、セレクトボタンの選択チェックのあとにチェックボックスの選択チェックをしたいのですが、どのように入れればよいのでしょうか。教えてください。 ↓参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++) if(document.form1.seibetu[i].checked)flag=false; } if(flag){ alert('性別が選択されていません'); return false; } if(document.form1.nenrei.value=="")flag=true; if(flag){ alert('年齢が選択されていません'); return false; } if( document.form1.Q1.length){ flag=1; var i; for(var i=0; i<document.form1.Q1.length; i++) if(document.form1.Q1[i].checked)flag=false; if(flag){ alert('Q1が選択されていません'); return false; } else {★★★ここに入れたい★★★   ;} } }

専門家に質問してみよう