0

空であってはならないテキストボックスがあるため、必要な検証コントロールをその横に配置しました。また、ユーザーに情報を送信するかどうかを尋ねるJavaScript 確認ボックスもあります。

問題は、確認が最初に表示され、次に検証が開始されることです。それを逆にしたいと思います。検証を最初に進めたい。これ以上エラーがない場合、ユーザーは情報を送信するかどうかを尋ねられます。

編集

これがマークアップ

<asp:LinkButton ID="_lnkAddUpdate" runat="server" CausesValidation="True" OnClientClick = "return ConfirmAddEdit(this.id)"
     CommandName="Update"></asp:LinkButton>

<asp:TextBox ID="_tbLocationName" runat="server" Text= '<%# Eval("LocationName") %>'/>
<asp:RequiredFieldValidator ID="reqLocationName" runat="server" ErrorMessage="Location name cannot be empty string." Text = "*" ControlToValidate = "_tbLocationName" />

これはジャバスクリプトです

function ConfirmActive(id) {
    var action = document.getElementById(id).innerHTML;
    var r = confirm("Are you sure you want to " + action + " this location?");
    if (r == false) {
        return false;
    }
}

助けてくれてありがとう。

4

2 に答える 2

1

私が通常行う方法は、次のJavaScriptを使用することです...

var cont = true;
if (typeof (Page_ClientValidate) === "function") {
  cont = Page_ClientValidate();
}
if (cont) {
  cont = window.confirm("are you sure?");
}
return cont;

これにより、ASP.NET 関数が使用可能かどうかがチェックされ、使用可能であれば実行されます...有効であれば、確認が実行されます。続行するかどうかの最終結果がクリック ハンドラーに返されます。


アップデート

もう少し説明するには:

属性を設定すると、設定しOnClientClickた JavaScript が常に最初に実行されます。したがって、ページにコントロールがある場合、それらはJavaScript のvalidatorにのみ実行されます。これは明らかにあなたが望むものではありません。

私の解決策は、JavaScript の後、ブラウザによって呼び出されるのとまったく同じ関数を呼び出すことです。マイナーな欠点は、検証が 2 回実行されることです (1 回はユーザーが直接実行し、もう 1 回は関数の実行後に実行されます)。

function ConfirmActive(id) {
  var cont = true;
  if (typeof (Page_ClientValidate) === "function") {
    cont = Page_ClientValidate();
  }
  if (cont) {
    var action = document.getElementById(id).innerHTML;
    cont = confirm("Are you sure you want to " + action + " this location?");
  }
  return cont
}
于 2012-11-13T18:15:36.283 に答える
1

コードを見なければ、何が問題なのかを確実に知ることは不可能ですが、2 つの問題のいずれかを抱えていると思います。

最初に確認することは、検証コードが確認コードの前にあることです

validate();
confirm();

簡単です。2番目の実際の問題は、リモート検証を使用していることだと思います。したがって、上記の解決策の代わりに、確認コードを検証コードへのコールバックにすることです。その方法は、検証リクエストの設定方法によって異なります。そのコードを投稿してください。私たちがお手伝いします。

于 2012-11-13T18:12:27.690 に答える