0

私はこのフォームを持っています:

   <div id="account-form">
        <form action="/Account/Login" id="login-form" class="form" method="post">
            <div id="input-fields">
                <div>
                    <input class="data-entry medium-margin" id="UserName" name="UserName" placeholder="Username (or guest)" required="required " size="25" type="text" value="">
                </div>
                <div>
                    <input class="data-entry medium-margin" id="Password" name="Password" placeholder="Password (or guest)" required="required " size="25" type="password">
                </div>
                <div>
                    <input class="data-entry inline-checkbox" id="RememberMe" name="RememberMe" type="checkbox" value="true"><input name="RememberMe" type="hidden" value="false">
                    <p style="margin-top: 0;">Remember me?</p>
                </div>
            </div>
            <button class="data-entry medium" id="login" type="submit">Login</button>
            <button class="data-entry medium" id="register" type="button" onclick="location.href='/Account/Register'">Register</button>
        </form>
    </div>

フォーム送信後の入力を無効にするこのJavaScript。

 <script type="text/javascript">
    (function() {
        document.getElementsByClassName('form')[0]
            .addEventListener("submit", function () {
                var inputs = document.getElementsByClassName("data-entry");
                for (i = 0; i < inputs.length; i++) {
                    inputs[i].disabled = true;
                }
    })();
</script>

ログイン データを入力して [送信] をクリックすると、入力が無効になり、入力フィールドが入力されていないというメッセージが表示され、送信の検証が失敗します。

HTML5 検証後に入力フィールドを無効にする方法はありますか?

4

1 に答える 1

0

タイムアウト0でコールバックをスケジュールするだけです

.addEventListener("submit", function () {
    setTimeout(function() {
        var inputs = document.getElementsByClassName("data-entry");
        for (i = 0; i < inputs.length; i++) {
            inputs[i].disabled = true;
        }
    }, 0); });

このようにして、submitイベント処理が完了すると無効化コードが実行されます。ただし、検証が失敗した場合に備えて、フィールドを再度有効にする必要があります。そうしないと、ユーザーは問題を修正できなくなります。

于 2013-10-26T08:27:50.090 に答える