私は、いくつかの必須のフィールドバリデーターと検証要約コントロールを持つ単純なフォームを持っています。フォームを送信すると、クライアント検証により、フォームがページの先頭にジャンプします。確認の要約を削除すると、ページは移動しません。相続人ASP.Netの検証の要約により、ページが先頭にジャンプする
簡単な例:
<asp:TextBox ID="test" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="testrequired" runat="server" ControlToValidate="test">*</asp:RequiredFieldValidator>
<asp:ValidationSummary ID="summary" runat="server" />
<asp:Button ID="submit" runat="server" Text="submit" />
私は笑いのために必要なフィールドバリデータとMaintainScrollPositionOnPostback="true"
でSetFocusOnError="true"
を設定しようとした - これはポストバックでなくても - 任意の運なし。この問題の解決策はありますか?
EDIT:
私はWebResource.axdによって生成されたjsファイルに問題を発見しました。 ValidationSummaryOnSubmit()
関数では1行になると思われます。
line 534: window.scrollTo(0,0);
これを削除または迂回する方法に関するアイデアはありますか?
EDIT2:
当面の回避クイック作品:(クライアント検証を無効にする)
MaintainScrollPositionOnPostback="true"
を設定し、すべての検証コントロールのためのEnableClientScript="false"
を設定
まだクライアント側のソリューションを期待しています...
EDIT3:
それは周りより良い仕事を思わ検証スクリプトによって呼び出されたとき、それは何もしないようにだけwindow.scrollTo()
関数をオーバーライドすることです:
<script type="text/javascript">
window.scrollTo = function() { }
</script>
上の任意の場所に上記の追加ページはクライアントの検証をそのままにしますが、ページ全体でwindow.scrollTo()
メソッドを無効にします
私はこれに慣れていませんが、URLの末尾に「#」を追加していますか?場合によっては、ページが先頭にジャンプします。 –
@cory、htmlはアンカーリンクではなくサブミットボタン入力を生成しません – Adam
edit3の場合:ページ上部に、そして下部に検証要約がある場合、これは役立ちません。一番上のものは決して焦点を当てません。 –