私はインラインjQuery UI datepickerを組み合わせたページを作成しました。ユーザーが新しい日付をクリックしてデータを更新したときに、updatepanelへのコールバックを開始するのはやめてください。さて、このページには複数の更新パネルがあります(質問しないでください:))ので、いくつかのものをクライアント側で実行するために、どの更新パネルが更新されたかを確認する必要があります。私は__doPostBack
を使ってポストバックを行い、更新が完了したときにはSys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {}
を聞きます。ASP.NETアップデートパネルとjQuery UIを組み合わせた奇妙なバグDatePicker
問題は、FFではコールバックが非同期操作ではなく、更新プログラムがどの更新パネルをnullに設定したかを確認するために必要なデータであるということです。
私の問題は、これはIEではうまく動作しますが、他のブラウザではうまくいかないことです.2つのことが原因です:IEは、問題を解決するquirksmodeに入ります。他のブラウザでは使用できないアップデートパネルのネイティブサポートFFやChrome結果でそれをロードしている間、それが想定される内容を示してメッセージボックスになりますIEでこのtestpageを焼成
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js "></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js "></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<script type="text/javascript">
function doAspNetPostback() {
__doPostBack('<%= hiddenOnSelectionChangedButton.ClientID %>', '');
}
$(document).ready(function() {
/* Create the datepicker */
buildDatepicker();
/* Add callback-method for when the scriptmanager finished a request */
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, args) {
/* Show the panelID - This is 'upd1|hiddenOnSelectionChangedButton' in IE as it should be, and null in Chrome/FF */
alert(sender._postBackSettings.panelID);
});
});
function buildDatepicker() {
var dp = $("#datepicker").datepicker({
onSelect: function(dateText, inst) {
/* Do a postback when someone clicks a date */
doAspNetPostback();
}
});
}
</script>
<div id="datepicker">
</div>
<asp:UpdatePanel UpdateMode="Conditional" ID="upd1" runat="server">
<ContentTemplate>
<asp:Button ID="hiddenOnSelectionChangedButton" Text="Press me" runat="server" />
<div id="lala" runat="server">
Upd1
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
:私がダウンして、問題を狭め、そしてtestpageを生産してきました
"null"と書かれたメッセージボックスにあります。
私はあらゆることを試しましたが、jQueryやASPの内部動作に深く関わっているわけではないので.NET Ajax。しかし、FireBugのコードをステップバイステップで実行すると、jQueryコールバックとASP.NET Ajaxコールバックの相互運用性に問題があると思います。
ご意見やご提案は高く評価されます。
ありがとうございました。
[更新] Tim解決済み!どうもありがとう! - AJAXとjQueryの組み合わせで:)
これは動作します。シンプルで素晴らしい:)おかげでたくさん! – cwap