3

この問題は私には奇妙に思え、私はそれを修正できないようです。私は単純なHTMLフォームを持っています。内部には、ここに示すようなテキストボックスとボタンがあります。

<form id="form1" method="get"> <!-- Note: No Action property -->
    <div>
       <h1>
           Simple Test Form</h1>
       <table border="0" width="400">
           <tr>
               <td align="right">
                   All of these words
               </td>
               <td>
                   <input name="txtAll" id="txtAll" type="text" value="testing keyword" />
               </td>
           </tr>
           <tr>
               <td colspan="2" align="center">
                   <input type="submit" name="Submit" value="Submit" onclick="myJS(this);" />
               </td>
           </tr>
       </table>
   </div>
</form>

MyJSファイルは次のとおりです。

<script type="text/javascript">
    function myJS(which) {
        var CONSTANT_SITE_TARGET = "http://servername/redirect/target.aspx?text=";

        //capture all values from the form
        var allWords = document.getElementById("txtAll").value;

        var morestring = ""; //More data manipulation here.....
        var url = CONSTANT_SITE_TARGET + allWords + morestring;

        window.open(url);
        //window.location = url;          //Doesn't work
        //window.location.href = url;     //Doesn't work
        //self.location = url;            //Doesn't work
        //top.location = url;             //Doesn't work
    }
</script>

ご覧のとおり、JavaScriptで指定されたURLにリダイレクトされません。window.openを使用すると、機能します。<form ...>タグには、 actionプロパティを入れないことに注意してください。新しいブラウザを開きたくありません。同じブラウザ内の新しいURLにリダイレクトするだけです。

リダイレクトする方法はありますか?

4

4 に答える 4

1

フォームタグは使用しないでください。または、ボタンの「type」属性を「submit」ではなく「button」に設定します。ボタンをクリックするとフォームが送信されますが、それは望ましくありません。フォームを削除するか、ボタンを変更すると、不適切なリダイレクトが修正されます。アクションを指定しない場合、デフォルトは現在のURLであると確信しています。

于 2012-06-07T17:42:05.250 に答える
1

わかりました、ただのアイデアです。actionパラメータを設定していないため、submitボタンのデフォルトの動作は同じページをリロードすることです。を処理することにより、その動作を変更しますonclickreturn false;クリックハンドラーの最後にあることで解決できる競合が存在する可能性があります。これにより、そのイベントのデフォルトのアクションが妨げられます。

于 2012-06-07T17:43:18.067 に答える
0

ここ

function myJS(which) {
    var CONSTANT_SITE_TARGET = "http://servername/redirect/target.aspx?text=";

    //capture all values from the form
    var allWords = which.txtAll.value;

    var morestring = ""; //More data manipulation here.....
    return CONSTANT_SITE_TARGET + allWords + morestring;
}


<form id="form1" method="get" onsubmit="this.action=myJs(this)">
<div>
    <h1>
        Simple Test Form</h1>
    <table border="0" width="400">
        <tr>
            <td align="right">
                All of these words
            </td>
            <td>
                <input name="txtAll" id="txtAll" type="text" value="testing keyword" />
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="submit" name="Submit" value="Submit" />
            </td>
        </tr>
    </table>
</div>
</form>

コメントを詳しく説明するには:

<script>
window.onload=function() {
  document.getElementById("Submit").onclick=function() {
     var CONSTANT_SITE_TARGET = "http://servername/redirect/target.aspx?text=";
    //capture all values from the form
    var allWords = document.getElementById("txtAll".value;
    var morestring = ""; //More data manipulation here.....
    location = CONSTANT_SITE_TARGET + allWords + morestring;
  }
}
</script>
<div>
    <h1>
        Simple Test Form</h1>
    <table border="0" width="400">
        <tr>
            <td align="right">
                All of these words
            </td>
            <td>
                <input name="txtAll" id="txtAll" type="text" value="testing keyword" />
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="button" id="Submit" value="Submit" />
            </td>
        </tr>
    </table>
</div>
于 2012-06-07T17:45:04.837 に答える
-1

以下のリダイレクトのオプションのいずれかを試してください。コードが有効なままになるように、そのうちの 3 つをコメントアウトしましたが、いずれかをいじって、ニーズに合っているかどうかを確認してください。

    var CONSTANT_SITE_TARGET = "http://servername/redirect/target.aspx?text=";

    //capture all values from the form
    var allWords = document.getElementById("txtAll").value;

    var morestring = ""; //More data manipulation here.....
    var url = CONSTANT_SITE_TARGET + allWords + morestring;

     window.location.href= url;
     //window.navigate(url);
     //self.location(url);
     //top.location(url);
于 2012-06-07T17:52:23.690 に答える