1

簡単なセットアップ: データ リスト形式のショッピング カート。

ヘッダーには、[数量の更新] と [選択したアイテムの削除] の 2 つのボタンがあります。

各 DataList アイテムには (特に) ショッピング カート アイテムの数量を格納する id="txtQty" のテキスト ボックスがあります。

ユーザーは、これらのテキスト ボックスの値を変更し、ヘッダーの [数量の更新] ボタンをクリックして、一度にすべての変更を保存できる必要があります。

実際に保存するためのロジックは完了しましたが、ここでさらに検証を追加します。UpdateQuantities ボタンの OnClientClick イベントから単一の JavaScript 関数を呼び出すことを望んでいました。これにより、すべての DataListItems を反復処理し、txtQty テキストボックスを見つけて、有効な数値入力であることを確認します。

これについて最善の方法を見つけるのに少し苦労しています。これまでのところ、私の唯一の本当のアイデアは、フォーム要素をループして、「txtQty」に一致する id を持つものを見つけて (ASP.NET が id を自動的に書き換えるため)、その特定の要素を検証することです。これは最善の解決策とは思えません。そこに浮かんでいるより良いアイデアはありますか?

4

4 に答える 4

1

最終的に、LongHorn の方法を少し使用して、目的の結果を得ることができました。カスタムバリデーターを使用して、クライアント側の検証機能を使用して、テキスト変更イベントで個々のテキストボックスをチェックする JS 関数を呼び出しました。

それは私の理想的な解決策ではありませんでしたが、役に立ちました。また、念のため、処理が行われる前に、リスト全体に対してサーバー側の検証が行われます。

于 2009-05-15T13:48:24.860 に答える
1

数量が有効な数値であるかどうかを確認するために、DataGrid にバリデーターを配置してみませんか? これは、これまでで最も簡単です。

それが解決策でない場合は、すべての txtQty テキストボックスに同じ css クラスを持たせます。次に、JQuery を使用して、そのクラス名を持つすべての要素を検索し、それらをループできます。これは、フォーム全体をループして、要素の ID の ID に「txtQty」が含まれているかどうかを確認するよりもはるかに優れています。

もう 1 つの方法は、確認したいテキストボックスのすべての ID を持つ隠しフィールドを作成することです。テキスト ボックスが追加されると、この非表示フィールドに追加します。次に、id 配列の隠しフィールドを分割し、それらの id だけを見つけます。

于 2009-05-14T14:14:26.757 に答える
0

各テキストボックスの onchange イベントの属性として検証を追加しないのはなぜですか。彼らが変更を加えたときに検証を行ったほうがよいでしょう。

検証コントロールを追加するか、独自にロールすることができます。

于 2009-05-15T13:58:12.653 に答える
0

IDの重複は本当に良くありません。クラスをテキストボックスに割り当ててみることもできます。複数のクラスを検証ルールとして適用できるため、「validate-quantity」が適しています。

<input type="textbox" class="validate-quantity validate-min" />

そうすれば、特定のテキストボックスをターゲットにするのではなく、フォームを反復処理して検証ルールを探すことができます。

于 2009-05-14T14:17:30.163 に答える