0

私は正直に、このエラーでグーグルからいくつかの異なる道を試しましたが、レンガの壁に頭をぶつけています。

コードビハインドにこのjqueryがあります:

tbxProdAC.Attributes.Add("onclick", "$('radProdAC.ClientID').attr('checked', true); $('ddlBuyer.ClientID').val('--Choose Buyer--'); $('ddlSub.ClientID').val('--Choose Sub Category--'); $('ddlProd.ClientID').val('--Choose Product--');");

ただし、デバッグをオンにしてテキストボックスをクリックすると、次の行に上記のエラーが表示されます。

 <input name="ctl00$ContentPlaceHolder1$tbxProdAC" type="text" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$tbxProdAC\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="ctl00_ContentPlaceHolder1_tbxProdAC" class="completionList2" onclick="$('radProdAC.ClientID').attr('checked', true); $('ddlBuyer.ClientID').val('--Choose Buyer--'); $('ddlSub.ClientID').val('--Choose Sub Category--'); $('ddlProd.ClientID').val('--Choose Product--');" style="z-index: 1; left: 200px; top: 475px; position: absolute; height: 20px; width: 345px;" />   

現在、ctl00$ContentPlaceHolder1$tbxProdAC は実際には存在しません。これは、コンテンツ プレース ホルダー内のコンテンツ ページにあるコントロールです。

jquery が正しい ID と一致するようにするにはどうすればよいですか? または、コンテンツ プレース ホルダーが元のコントロール ID を修正しないようにするにはどうすればよいですか?

私は別のことをしようとして怒っているので、どんな助けも大いに受け取りました!

4

2 に答える 2

0
tbxProdAC.Attributes.Add(    
    "onclick", 
    "$('" + radProdAC.ClientID + "').attr('checked', true); $('" + ddlBuyer.ClientID + "').val('--Choose Buyer--'); $('" + ddlSub.ClientID + "').val('--Choose Sub Category--'); $('" + ddlProd.ClientID + "').val('--Choose Product--');"
);

クライアントIDを取得する必要があります。これは、引用符の外で行う必要があります。

"$('radProdAC.ClientID').attr('checked', true);入力するすべての場所に変更する必要があります"$('" + radProdAC.ClientID + "').attr('checked', true);

于 2010-01-29T13:43:02.367 に答える
0

onchange イベント ハンドラーでは、javascript ビットは必要ありません。関数を直接呼び出すことができます。これを行う必要があるのは、href によって関数を呼び出すことだけです。また、タイムアウトで行っている方法でパラメーターを渡すこともできません。

イベントを呼び出すのではなく、関数でタイムアウトを呼び出す価値があるかもしれません。

どちらの方法でも、タイムアウトで関数を異常に呼び出すことができます。

setTimeout(function(){youfunction here with parameters}, 0);

また、他のイベントクリックなどで起こっているすべてのことを独自の機能に移動します。これらすべてを関数、おそらく外部 js ファイルに移動すると、何が起こっているのかをより明確に追跡できるようになります。まだ行っていない場合は、デバッグにも firebug を使用してください。ページから生成された変数を取得する必要がある場合は、ページ内の変数について、js から呼び出します。

jquery do では、明示的に参照するのではなく、具体的すぎて dom をトラバースして何かを見つけることができます。これにより、コードが簡単になるだけでなく、コードがより一般的になり、再利用しやすくなります。

于 2010-01-29T13:41:40.480 に答える