0

私のaspxページには、動的に生成されたテキストボックスと各製品の1つの注文ボタンとともに製品のリストが含まれています。

テキストボックスとボタンは、実行時にtxt110234、txt110235 ...などのIDで生成され、ボタンの場合はbtn110234、btn110235...などになります。

ユーザーがテキストボックスに数量を入力し、任意の製品に関連付けられている注文ボタンを押して注文する必要があるたびに。

すべてが正常に機能していますが、今はajaxを使用して実行したいので、ユーザーがテキストボックスに入力した値を取得する必要があります。次のようなことを実行したい-

   var quan = document.getElementById('<%= txt' + id + '.ClientID%>').value;

しかし、それは私に次のエラーを与えます。

コンパイラエラーメッセージ:CS1012:文字リテラルの文字が多すぎますソースエラー:

テキストボックスの値を取得するにはどうすればよいですか?

4

2 に答える 2

2

あなたが得たエラーは、「<%= .. %>」ブロック内に JavaScript を含めることができないためです。また、「<%= .. %>」式はページがレンダリングされる前にサーバーで評価されるため、これは不可能に見えますが、「id」はクライアント側の変数です。

次のようにサーバー側でスクリプトを設定できます。

クライアント側のコード:

function foo(ctlID)
{
   var quan = document.getElementById(ctlID).value;
}

サーバー側コード:

TextBox txt = new TextBox();
txt.ID = "SomeID";
Form.Controls.Add(txt);
Button btn = new Button();
btn.ID = "someID";
btn.OnClientClick = "foo('" + txt.ClientID + "')";
于 2012-08-28T07:13:26.487 に答える
0

提案: これを行う 1 つの方法は、jQuery css セレクターを使用することです。特定の cssclass をすべての入力テキスト ボックスに割り当て、jQuery セレクターを介してそれらすべてを取得できます。

たとえば、テキスト ボックスを動的に生成する場合、それらに CssClass =".productQuantity" を割り当てることができます。

その後、$('.productQuantity') のような jQuery セレクターを使用します。

複数の要素にトラバースしたい場合は、個人的にこのアプローチを好みます。これにより、IDなどを扱う必要がなくなります。

于 2012-08-28T07:12:27.943 に答える