このような質問がたくさんあることは知っていますが、全く同じことはありません。私はASPXページを持っていて、javascriptを使って確認ポップアップを表示しています。ボタンをクリックすると、クリックした値は使用されず、以前の値が使用されます。だから、OKをクリックすると、最初にキャンセルされます。 OKを2回クリックするとOKに、キャンセルをクリックするとOKに、キャンセルをもう一度クリックするとキャンセルになります。私はこれがポストバックの問題だと確信していますが、私はボタンのクリックでJavaScriptを呼び出さないので、それを解決する方法はわかりませんが、後で。私は自分のコードを使ってレコードが重複しているかどうかを判断し、そうであればユーザーに知らせるポップアップを表示し、受け入れまたは取り消すオプションを与えます。重複がない場合、ポップアップのスクリプトは呼び出されません。どうすればこの問題を解決できますか?私のASPXポストバックの問題JavaScriptポップアップ
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Duplicate Record. Do you want to save?")) {
confirm_value.value = "Yes";
} else {
confirm_value.value = "No";
}
document.forms[0].appendChild(confirm_value);
}
これで
Javascriptが条件をテストした後メソッドから呼び出され、私のCSからのコードです。
ScriptManager.RegisterStartupScript(this, base.GetType(), "confirmation", "Confirm();", true);
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == "Yes")
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked YES!')", true);
}
else
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true);
}
注:私は、そのデータ入力フォームと同じページに複数のフィールドのためのAutoPostBackを使用し、一つのフィールドのために選択されているものに応じています別のフィールドが移入されるかに依存します。
RegisterStartupScriptは、サーバー側からhtmlにjsコードを追加するために使用されます。すぐには実行されません。ブラウザでHTMLをレンダリングした後でなければなりません。この時点でconfirm_valueを取得することはできません。 –