1

私は現在、多くの AJAX AutoCompleteExtenders を使用する必要があるプロジェクトに取り組んでおり、それらは正常に動作していますが、コードを整理してマスター ページを実装していると、問題が発生します。私はこのJSを持っています:

$find('txtName')._onMethodComplete = function(result, context) {

$find('txtName')._update(context, result, false);
webservice_callback(result,context);
};

ページを読み込むと、そのスニペットに関連して次のエラーが発生します。

Microsoft JScript ランタイム エラー: 'null' が null であるか、オブジェクトではありません

繰り返しますが、これは、何らかの奇妙な理由でマスター ページがある場合にのみ発生します。何か案は?

4

5 に答える 5

1

<%=txtName.ClientID%>マスターページを使用すると、マスターページとaspx/usercontrolsなどの間の名前の衝突を避けるためにIDが破損するため、使用する必要があります.

<%=ただし、使用できるようにするには、ASP.NET マークアップ コードに JS を含める必要があることに注意してください。これは、の src#includeを使用するのではなく、IIS で実行できます。script

例:

<!-- #Include virtual=".\JS\YourJSFileWithASPNETMarkup.js" -->
于 2011-04-07T14:16:32.987 に答える
0

マスターページを使用すると、コントロールの ID が変更されるため、Javascript で同じ ID を使用することはできません。代わりに、次のようにセレクターを変更できます: $('input[id*="txtName"]') が見つかりましたtxtName を含む ID を持つすべてのコントロール。この種のさまざまなセレクターを使用できます。 ここに便利なリンクがあります

于 2011-04-07T14:42:34.997 に答える
0

.NET 4 を使用している場合はClientIDMode="Static"、ページ ディレクティブに追加することができます。これにより、ASP.NET は、要素 ID から手を離すように指示されます。

于 2011-04-07T14:24:09.510 に答える
0

ページでソースを表示してみて、<input> の名前が txtName のままであることを確認してください。マスター ページでは、名前が変わることがあります。

于 2011-04-07T14:15:13.420 に答える
0

これを試すことができますか:

('<%=txtName.ClientID>')._onMethodComplete = function(result, context) {

于 2011-04-07T14:17:33.143 に答える