ASP.NET ページに 2 つのセクションがあり、1 つは登録用、もう 1 つはログイン用です。それぞれに [送信] ボタンがあります。
ページのログイン部分にいるとき、「Enter」が押されたときに最初の「送信」ボタンが作動するようにします。登録部分で、「Enter」が押されたときに2番目の「送信」ボタンが作動するようにします。
問題: ページにアクセスできるようにする必要があります (つまり、JavaScript の使用が許可されていません)。
誰でもアイデアはありますか?:) :(
2つの送信が異なる形式である場合(そして、この場合はそうであるように聞こえます)、問題はありません。正気のブラウザは、現在のフォームから送信ボタンを受け取ります。
2つのフォームが実際に別々のフォームである限り、これは自動的に発生するはずです。つまり、<form>ログイン用と登録用の2つの別個の要素が必要です。
編集:
ブラウザは、フォーカスのあるフォームに基づいて、どの送信ボタンを「押す」かを決定します。1つのフォームに複数の送信ボタンがある場合(ここでの場合のように聞こえます)、ブラウザは最初に見つかった送信ボタンを使用して送信します。私はその行動を回避する方法を知りません。
あなたは本当に、単一のフォームで2つのアクションのいずれかを実行する方法を求めています。これはフォームモデルを壊します。フォームは、単一のURLでアクション(GETまたはPOST)を実行するように設計されています。この動作を回避する1つの方法を考えることができますが、それは特にクリーンではありません。
提案:
私は私が話していることの大まかな図面を作りました。基本的に、フォームの上部に2つのラジオボタンを追加します。1つはログイン用、もう1つは登録用です。それらの下に2つのフィールドセットがあります。1つはログイン用のフィールド、もう1つは登録用のフィールドです。フォームには送信ボタンが1つあります。
クリックしてフルサイズの画像を表示http://img220.imageshack.us/img220/5923/boardc.th.jpg
Javascriptを使用していないユーザーは、適切なラジオボタンをチェックし、適切なフィールドのセットに入力します。Javascriptを使用しているユーザーの方がエクスペリエンスが向上します。ログインラジオボタンがチェックされている場合は、登録フィールドセットを非表示にします。[登録]ラジオボタンがオンになっている場合は、ログインフィールドセットを非表示にします。
適切なスタイリングを使用すると、見栄えを良くすることができます。ロジックは、ラジオボタンフィールドの値をチェックして、実行するアクションを決定する必要がありますが、それはそれほど難しいことではありません。
単一のフォームの制限を考えると、私が思いつくことができるのはそれだけです。他の制約によっては、これは実行可能な解決策ではないかもしれませんが、私が持っているのはそれだけです。幸運を祈ります。私が話し合ったことについて質問があれば教えてください。
コントロールをパネルでラップしてから、パネルのデフォルトのボタンプロパティを目的のボタンに設定します。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx
彼らは同じ形をしています... :(
えっ、変えないの?フィールドを共有しない限り、同じ形式である必要はありません。「ログイン」と「登録」は、私には 2 つの異なる機能のように聞こえます。
既定の送信ボタンを指定する純粋な HTML の方法はありません。ましてや、さまざまな状況で異なる既定のボタンを指定することはできません。
JavaScript を含めること自体は、ページにアクセスできなくなるわけではありません。JavaScript をオフにしても動作する限り、問題ありません。