質問

VB.NET for ASP.NET 1.1で記述されたレガシーWebアプリケーションに取り組んでいます。特定のページには、いくつかのフィールドを持つフォームがあります。ドロップダウンボックスの値の変更に応じて、いくつかのフィールドをクリアし、いくつかのドロップダウンボックスを最初のオプションにリセットし、それらをすべて「無効」に設定しています。 UIで。これを行うには、jQueryを使用しています。これらすべてのフィールドにcssクラスを追加すると、jQueryセレクターは次のようになります:$(" *。my-css-class")。以下に説明するサンプルコードを示します。

var fields = $("*.fields");
if( some_condition )
{
fields.val("");
fields.attr("selectedIndex", 0);
fields.attr("disabled", "disabled");
}

上記のjsコードに応じてUIは期待どおりに更新されますが、ボタンのクリックに応じてページをポストバックすると、これらのコントロールに関連するサーバー側で元の値が保持されます。たとえば、txtSomethingは、cssクラス" fields"を持つフィールドの1つです。 (したがって、上記のjQueryセレクターによって選択されます)。ユーザーは「1234」と入力します。このテキストボックスに入力し、フォームを送信します。同じページがその値を保持してそれ自体にポストバックされるか、またはこのページに戻ってサーバー側で値を事前入力(たとえば、ユーザーが概要ページの[編集]ボタンをクリック)して、コントロールtxtSomethingが初期化されます値が「1234」のクライアント。ユーザーがUIで表示する限り、jQueryコードは値をクリアし、ユーザーは送信ボタンをクリックします。 jQueryセレクターで値を問い合わせると、このフィールドの値は空の文字列です。ページがポストバックされ、コードをステップ実行する(またはこのコントロールの値を使用して何かを実行する)とき、まだ「1234」です。

作成する非常に重要なポイントは、これらの値が一度送信された後にブラウザーに返送されることです。したがって、送信されるフォーム、またはこれらの値がサーバー側でバインドまたは設定され、事前に入力されたブラウザーに出力される場合(デフォルトまたは空の値でブラウザーに出力されるのではなく)を想像してください。ページをデフォルト(空のテキストボックス)としてロードし、テキストを入力し、js関数をトリガーしてこれらのフィールドをクリアした場合、入力した値はサーバーに送信されません。

役に立ちましたか?

解決

これらのフィールドを無効にする必要があるのはなぜですか?コントロールを無効にすると、サーバーに値をポストしないようにできます...少なくとも、asp.netコントロールがサーバー側で無効になった場合に発生します。

更新1:がサーバー側のみであるかどうかは疑う余地がないので、調べました:) http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1 ..."この例では、INPUT要素は無効になっています。したがって、ユーザー入力を受け取ることも、フォームで値を送信することもできません。"ですから、クライアント側で無効にしても値を投稿しませんでした

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top