2011-07-24 11 views
0

action属性を持つ<form>があります。javascriptのない非静的なフォームアクション?

<input>の値に基づいてactionの値を変更したいと思います。

この値は、ユーザーが指定した値です。値がpage1.phpの場合、フォームはpage1.phpに送信されます。値がpage2.phpの場合、フォームはpage2.phpに送信されます。

今はJavaScriptを使用してこれを達成していますが、JavaScriptを無効にしたブラウザでは機能しません。

actionをJavaScriptなしで非staticにする方法はありますか?

答えて

1

サーバー側の値を受信したい場合は、getをフォームのmethodとして使用します(最終的にはpage.php?my_var_name=my_var_valueになります)。

入力の値に基づいてフォームを別のページに転送する場合は、JSを使用するか、サーバー側に「キャッチオール」ページが必要ですフォームを取得し、値に基づいて最終ページにリダイレクトします。

+0

そのように見えない場合は、 – Pacerier

+0

なぜですか?あなたは何が必要かを詳述できますか?私の経験では、すべての問題の解決策があります:) –

+0

PHPページでは、URLを解析して、クエリ文字列のテキストに基づいて別のページにリダイレクトするか(同じページで別の機能を実行する必要があります) 。これを処理するもう1つの方法は、ハッシュURL(domain.com/#myhash)を使用して、ページの別の部分や別のフォームに移動することです。 –

2

これは、JavaScriptを一切呼び出すことなく行うことができます。

PHPの例;

<?php 
/*if no destination was set previously the form will post back to itself*/ 
$action=isset($_Request['destination'])?$_Request['destination']:''; 
?> 
<form name='a-form-name' action="<?php echo $action;?>"> 

/*include other inputs etc as required. 
Include a 'destination' input in _all_ forms involved. 
You can of course name it whatever you like. But should always be the same name in all forms involved. 
*/ 

<input type='hidden' name='destination' value='the-desired-destination-of-next-action'> 

<input type='submit' name='whatever' value='Click here'> 
</form> 

あなたはそれはあなたがURLのクエリ文字列の前の提出や「目的地」に設定されたものは何でも先に行きます送信ボタンを押したとき。

必要に応じて、代わりに変数を使用して、非表示の入力値を動的にすることもできます。この方法を使用すると、分岐は非常に簡単で広範囲になります。 HTH

+0

これはうまくいかず、問題は 'input.value'がユーザによって提供されているため、あらかじめわかっていないということです。 – Pacerier

関連する問題