• ベストアンサー

【js】onsubmit属性が変更できない

以下のようなhtmlを作ったのですが、onsubmit属性が変更されません。 どうすれば変更可能でしょうか。 <html> <body> <form id="test" action="test.cgi" onsubmit="test.cgi"> </form> <script> var elm = document.getElementById("test"); elm.action = "#"; elm.onsubmit = "#"; </script> </body> </html>

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>elm.onsubmit = "#"; elmは任意のフォームということでよいのですか? submitしたくないの?submitしたあとに#に飛びたいの? なにをしたいのだかさっぱりわからない

palayo
質問者

お礼

elm.onsubmit = "test();return false;"; のところを elm.setAttribute("onsubmit", "test(); return false;"); に変更したらできました。 ありがとうございました。

palayo
質問者

補足

すいません。例が悪かったですね。 デフォルトではtest.cgiが動くのですが、javascriptで動的に javascriptの関数tetst()が動くように変更したいのです。 elmはidが"test"のフォームです。 <html> <body> <form id="test" action="test.cgi" <input type="submit" value="submit"> </form> <script> var elm = document.getElementById("test"); elm.action = "#"; elm.onsubmit = "test();return false;"; </script> </body> </html> 要は、どうすればjavascriptでonsubmit属性が変更できるのか 教えてほしいのです。

関連するQ&A

  • jsでプルダウンで選択したものがうまく表示されない

    以下のhtml文があります。 <!DOCTYPE html> <html> <head> <title></title> <script language="javascript" type="text/javascript"> function onButtonClick() { var val = document.forms.form1.textBox1.value; var target = document.getElementById("output"); if (val == "Penguin") { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script> </head> <body> <form action="" id="form1"> <div>"Penguin"と入力してください。</div> <input id="textBox1" type="text" value="" /> <input type="button" value="Exec" onclick="onButtonClick();" /> </form> <div id="output"></div> </body> </html> Penguinと入力すると合っていますと表示が出ます。 これを、プルダウン方式にしました。 <!DOCTYPE html> <html> <head> <title></title> <script language="javascript" type="text/javascript"> function selectboxChange() { var val1 = document.forms.form1.Select1.value1; var target = document.getElementById("output"); if (val1 == "要素1") { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script> </head> <body> <form name="form1" action=""> <select id="Select1" onchange="selectboxChange();"> <option>---</option> <option value1 == "要素1">要素1</option> <option>要素2</option> <option>要素3</option> <option>要素4</option> <option>要素5</option> </select> </form> <div id="output"></div> </body> </body> </html> これにすれば、要素1を選択すれば、会っていますと表示されるのですが、されません。 どうしたら改善されますか。

  • JSのgetElementByIdについて

    以下のコードはtextに書き込まれた内容を取得して表示するコードなのですが 値が取得できません どうすればできますか? <!doctype html> <head> <meta charset="utf-8"> </head> <body> <input type="text" id="txt"> <input type="button" value="TEST" onclick="tamesi();"> <script> function tamesi(){ var aaa = document.getElementById('txt'); document.write(aaa); } </script> </body> </html>

  • jsで次のELEMENT_NODEを見つけたい

    しごく単純な質問かもしれませんが、検索エンジン等で捜しても見つからなかったのでご教授頂けないでしょうか?(検索の仕方が悪いかもしれません。。。) たとえば以下の簡単なjavascriptがあるとします。 <body> <div id="test1">hogehogehoge</div> <div>fugafugafuga</div> <script type="text/javascript"> var obj = document.getElementById('test1'); console.log(obj.nextSibling); </script> </body> この場合、nextSiblingで取得した値は次のテキストノードになってしまいます。 決めうちであれば以下のようにやってみたらうまくいきましたが、 なんだかなぁ~って感じです。 <script type="text/javascript"> var obj = document.getElementById('test1'); console.log(obj.nextSibling.nextSibling); </script> jQueryで言うところのsiblings()のような使い方、またはソースをご教授いただけないでしょうか?(できれば説明文も添えて頂ければ助かります) 一応jQueryのソースを読もうとしましたが、まことに恥ずかしいのですが力不足でまるで読むことができませんでした。 以上よろしくお願いいたします。

  • イベントリスナーに設定した関数内で、id属性の値を取得するには

    IEでイベントリスナーに設定した関数で、イベントを発生させた要素のid属性値を取得する方法が分からずに困っています。 記述したコードは下記のようになります。Firefoxではうまく動作しました。 clickHandler内でFirefoxのe.currentTarget.idに対応するような処理はどのように行えばよいでしょうか。 ------------ JavaScript部分 ----------------------- function addEvent(elm, evType, fn, useCapture) { if (elm.addEventListener) { elm.addEventListener(evType, fn, useCapture); return true; } else if (elm.attachEvent) { var r = elm.attachEvent('on' + evType, fn); return r; } else { elm['on' + evType] = fn; } } function clickHandler(e) { var id; if (document.all && !window.opera) { // IEの場合に、ここの処理でid属性の属性地 hoge1やhoge2を取得したい。 // id = window.event.srcElement.id; これではだめ } else { id = e.currentTarget.id; } // idに応じた処理 } var elm1 = document.getElementById('hoge1'); var elm1 = document.getElementById('hoge2'); addEvent(elm1,'click',clickHandler,false); addEvent(elm2,'click',clickHandler,false); ------------ HTML部分 ----------------------- <li><a id="hoge1" href="#"><img src="●●" /></a></li> <li><a id="hoge2" href="#"><img src="●●" /></a></li> 先に進むことができずに困っています。よろしくお願いします。

  • form の onSubmit がコールされません;

    JavaScript初心者のyuki_xです。よろしくお願いします☆ 以下のコードで、 <チェック>を押下したときの動作が上手くいきません。 どうしてなのか、さっぱりわからないので教えてください!! 私の予定では、 1)<チェック>押下 2)nextPage() が呼ばれる 3)nextPage() で onSubmit イベントが発生 4)onSubmit に記述されている check() が呼ばれる となるはずなのですが、onSubmit イベントが発生していないようなのです。 alert() をいれて確認したところ、nextPage() が呼ばれたあと、 FORM の action に書かれている next.html へ移ってしまいます。 check() は呼ばれません。 どこが間違っているでしょうか? <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> <!-- function nextPage() { document.myform.type.value = n; document.myform.submit(); } function check() { //入力チェック } //--> </SCRIPT> <FORM action="next.html" method="post" name="myform" onSubmit="return check()"> <INPUT type="hidden" name="type" value=""> <INPUT type="button" value="チェック" onClick="nextPage();"> </FORM> (IE を使っています。)

  • onsubmitのこと

    診断テストを作成しているのですが、「診断」をクリックすると下記のことを全部実行したいのですが・・・ (1)点数の計算 (2)点数によって判定Windowが出る (3)テキスト欄の記入もれ確認 (4)cgiを使ってのメール送信 <FORM name="form1" action="***.cgi" mathod="POST" onsubmit="displayScore();returnCheck()"> 上記のことは不可能でしょうか? ひとつのボタンで「診断」「送信」をいっぺんに実行したいのですが・・・ 初心者のため、どうぞよろしくお願いいたします。

  • iframeの属性(スクロールバー)変更について

    OS情報:windowsXP ブラウザ情報:IE iframeの属性(スクロールバー)変更をしたいのですがうまくいきません。 変更したい属性は、スクロールバーの表示、非表示です。 背景色や指定URLの変更は、 document.getElementById("フレームID").style.backgroundColor = "yellow"; document.getElementById("フレームID").src = "移動先のURL"; などで出来るのですが、スクロールバーの属性変更ができません。 document.getElementById("フレームID").scrolling = "yes || no"; など、やってみましたがダメでした。 よろしくお願いしますm(__)m

  • 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', の方が、まったく動きません。(タイポかも)

  • javascriptからCGIへの値渡し

    cookieは利用しない方向で考えています。 HTML上のdocument.form01.のsubmitが押下されたら一度手入力されたデータ(userinput)を加工し、 別のフォームform02.valueに格納してtest.cgiにPOSTで投げる動作を期待しています。 下記だとページ遷移無しで一時的な格納まで確認しましたが CGIへの送信が機能していないようです。 どの様にすべきでしょうか? [html] <script type="text/javascript"> <!-- function onSubmit() { document.form02.sendform.value = '\"' + document.form01.userinput.value + '\"'; document.form02.submit(); } --> </script> <body> <form name="form02" method="POST" action="test.cgi"> <input type="hidden" name="sendform" value=""> </form> <form method="POST" action="" name="form01"> <input type="text" name="userinput"> <input type="submit" value"送信" onclick="return onSubmit();"> </form> </body> </html>

  • select要素のvalueを配列で取得したいです

    select要素のvalueを配列で取得したく、下記のサンプルを動かそうと試みました。 <html> <head></head> <body> <form> <!-- ここに<select name="c1">~<select name="c20">の20個のselectがあるとする --> </form> <input type="button" value="はい" onclick="test(this.form)"> <script type="text/javascript"> function test ( form ) { var values = new Array(); for ( var i=0; i < 20; i ++ ) { var elm = form.elements['c'+i]; values[i] = elm.options[elm.selectedIndex].value; } } </script> </body> </html> このようなサンプルを動かそうとしたのですが、 var elm = form.elements['c'+i];のところの['c'+i]が正しくないようで 「elm is underfind」というエラーが出てしまいます <script> function myForm (form) { var values = new Array(); for ( var i=0; i<20; i++ ) { var elm = form.elements[i]; values[i] = elm.options[elm.selectedIndex].value; document.write(values[i] + "<br />"); } } </script> インデックス名を'c'+iからiにすると取得できるのですが、 ブラウザが読み込みをやめない状態になってしまいます。 select要素のnameはc1から始まりc20と何も換えていません。 何が間違っているのでしょうか。

専門家に質問してみよう