XHTML 1.1でValidになるフォームの作成方法

このQ&Aのポイント
  • XHTML 1.1でValidになるフォームを作成する方法について説明します。
  • form要素にtarget=_blankを指定するとXHTML 1.1でValidにならないため、代替方法が必要です。
  • AタグのJavaScriptのwindow.openの方法を使用して、target=_blankを使わずにValidなフォームを作成することができます。
回答を見る
  • ベストアンサー

【至急】XHTML 1.1でValidになる form (target=_blank)付フォーム

以下のHTMLは、XHTML 1.1でValidになるのですが・・ ・<a href="aaa">aaa</a> ・<a href="aaa" onclick="window.open('aaa','_blank');return false">link</a> ・<form method="post" action="aaa"> <input name="text" value=""> <input type="submit"> </form> 以下のHTMLは、XHTML 1.1でValidにならなくて困っています。 ・<form method="post" action="aaa" target="_blank"> <input name="text" value=""> <input type="submit"> </form> 上記のAタグのJavaScriptでのwindow.openの方法でこのValidにならないformタグをValidにできるようにならないでしょうか? 受け取り側(perlスクリプト)は以下の条件があります。 ・どのコードが入るか不明だが、ブラウザで認識されているコードが入ると思われる。 ・UTF8が使えるかどうか不明 ・EUCは確実に使える ・内部コードはEUCである よろしくお願いします。 p.s.ポップアップ(target=_blank等)が何故廃止されたとか、そのような議論はご遠慮下さい。

  • HTML
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • Hasty
  • ベストアンサー率73% (19/26)
回答No.1

確か、 <form method="post" action="aaa" onsubmit="this.target='_blank'"> で行けたかと。 ただし、これはブラウザの実装の不完全さを突いたものなので、将来完全にXHTML1.1に則って動作するブラウザが現れたら、スクリプトエラーになってしまう可能性があります。

ymda
質問者

お礼

XHTML 1.1 Validにする理由が、まずSEO対策なので、ブラウザの不完全さよりも機械から見て可能な限りきれいなXHTMLに見られるようにしたいという所です。 いつまで続くかどうかわかりませんが、IEの場合ですと過去の互換性重視で、かなり長い期間 target が存在するのではないかと思います。 p.s.って、IE7もタブブラウザになるんでしたね・・ ありがとうございます。

関連するQ&A

  • <FORM>タグのtargetに値を書込む方法を教えて下さい

    送信ボタンを押すとtargetの値をとれず、javascriptエラーになります。 「引数は無効です」と表示されます。 SUBMITした時にmake_newwin(f)を動作しようとしているのですが、 うまくtargetが取れません。 targetには、親ウィンドウ名を書き込みたいのです。 何か良い方法ありましたら、教えて下さい。 <script language="javascript" type="text/javascript"> <!-- function make_newwin(f) { alert(f) …ここで内容を表示したところ[object]と表示されました。   var w = window.open('about:blank', f.target);    w.focus(); window.close(); } <FORM name="test" action="/cgi-bin/test.cgi" method="post" target="" onSubmit="make_newwin(this);"> <input name = "aaa" type = "hidden" value ="10000" >        : </FORM> </BODY> <script> document.test.target=opener.window.top.name; </script> </HTML>

  • formでのtarget="_blank"2回目

    formタグでtarget="_blank"要素を指定して、別ウィンドウ(タブ)に結果を戻す仕組みを作成しました。 submitボタンをクリックすると処理が実行され、1回目は問題なく挙動します。 formタグが書かれている画面で2回目以降ボタンをクリックしても全く反応しません。 リロードすると反応するようになります。 リロードすると入力したデータが飛んでしまうので、それ以外の方法で2回以上ユーザーがボタンをクリックした場合submitしたいのですが何か方法はありますでしょうか? (少し調べてみたら、2回目以降出来なくなる事象は何件か見つかりましたが回避策が良く分かりませんでした。) 別タブに出てくるのであればフォームにtarget="_blank"を入れる形には一切こだわっていません。 よろしくお願いいたします。

  • target="_blank"とは何の意味ですか??

    サイトのソースを見ていると、 <a href="URL" target="_blank"> というのをよく見かけます。 このtarget="_blank"というのは知らなかったのですが どういった効果があるのでしょうか??

    • ベストアンサー
    • HTML
  • <FORM TARGET="">で開く窓の大きさ指定

    Javascriptかもしれませんが、perl内で使いたいので一応ここで‥‥ A.cgiからフォームに入力後送信、B.cgiに飛びます。 その時、B.cgiを新しく開いたウィンドウに表示したいので下記のようにしてます。 A.cgi側フォーム <FORM METHOD="post" ACTION="B.cgi" TARGET="_blank"></FORM> この_blankで新しい窓は開きますが、この開いた窓の大きさを指定するにはどうしたらいいんでしょうか? Javascriptはあまり良くわかりませんが、window.open()くらいなら使った事あります。これだと大きさも指定できますが、パラメーター(?)を渡しつつ、開いた窓の大きさも指定したいのです。 渡したいパラメーターは1種類(しかも変数で代入できる)なので、フォームじゃなくても <A HREF="B.cgi=?$i"></A>って格好でもいいです。($iの値は固定されていない) 何か私でもできる簡単な方法はありますか?

    • ベストアンサー
    • Perl
  • javascript/target="_blank

    フレーム内から別窓でurlを開こうとしています。 htmlでは以下の通りで、実現できます。 <a href="http://www.goo.ne.jp/" target="_blank">goo</a> JavaScriptで window.open(my_url,'_blank'); return false; としても、別窓で開くのですが、戻るの「←」が表示されてしまいます。(上記、「my_url」は変数です。) 宜しくお願いします。

  • target=”_blank” が効きません

    <body>  <ul><li><a href="○" target="_blank">リンク</a></li></ul> </body> 上記のように、<a>~</a>を<ul>~</ul>で囲うとtarget="_blank"が効きません。 <a>~</a>を<p></p>など他のタグで囲った場合は効きます。 <ul>~</ul>で囲った場合だけ効きません。 どんな原因が考えられるのでしょうか… ulにかけているcssの中にtarget="_blank"を殺すような記述が入ってしまっているのでしょうか。 そんなcssありますか? 目的はリンクを別窓で開きたいだけです。 ヒントをいただけますと助かります。

    • ベストアンサー
    • CSS
  • target=_blankを使わない新規ウィンドウ

    target=_blankを使わない新規ウィンドウオープンについての質問です。 <a href="http://www.example.com" onclick="window.open(pageTracker._getLinkerUrl(this.href),'_blank'); return false;"> 上記を記述しているのですが、ある日から突然新規ウインドウを開かずリンクサイトが表示されてしまいます。 「pageTracker」が機能したまま別ウインドウでリンクサイトが開く方法を知りたいです。 よろしくお願いいたします。

  • form の target(

    form タグに オプションとして存在する target に関してです。 form method="POST" action="***.cgi" target="new" と記述すればsubmit実行時に結果を別ウィンドウに転送します ここまではいいのでが・・・・ submitボタンが複数ある場合(ボタンによって処理が違う) ボタンによって、このボタンは新しいウィンドウを開くが、 このボタンは開かない(同一ウィンドウ内に結果表示する) というように設定することはできますか? CGIとJavaSCRIPTの利用は可能です。 やはり別の form を立てるしかないのでしょうか? (cgiに渡す値が大量なため一つのformで実現したいとおもっています)

    • ベストアンサー
    • HTML
  • open.window(javascript) を使わないで、新規windowを3つ開く方法

    JavaScpript の open.window を使うと、値がGET で渡ってしまいます。 POST でデータを渡したいので、FORM で window を 3つ開く方法って ないでしょうか? <FORM method=POST name=form1 target="window1" ACTION="/cgi-bin/search1.pl"> <input type="text" name="searchword1"> </form> <FORM method=POST name=form1 target="window2" ACTION="/cgi-bin/search2.pl"> <input type="text" name="searchword2"> </form> <FORM method=POST name=form1 target="window3" ACTION="/cgi-bin/search3.pl"> <input type="text" name="searchword3"> </form> の 3 つのフォームを 1 つの <input type="submit" name="Search" value=" 検索 "> で起動させるってことです。 (または、open.windows で値を渡すとき、POST で渡したい) よろしくお願いします。

    • ベストアンサー
    • CGI
  • 同一ページの複数のフォーム通信

    お世話になります。 <form method='POST' action='#1'> <input name='text1'> <input name='text2'> <form method='POST' action='#2'> <input name='text3'> <input method='submit' value='B'> </form> <input method='submit' value='A'> </form> Aにて text1,2,3を#1へ送信 Bにて text3を#2へ送信 したいのですが、上手くできません。 <form></form>で囲まれている中に 更に<form></form>する事はできないのでしょうか? 代替案はありますか?? よろしくお願いします。

専門家に質問してみよう