Запретить очистку элементов после неудачной проверки на вложенной главной странице .NET - PullRequest
2 голосов
/ 18 декабря 2011

Проверка работает отлично, но если проверка не проходит, форма очищает все данные. Как я могу проверить форму, не заставляя пользователя снова вводить все данные? Из-за характера перенаправления мне нужно, чтобы HTML-форма отображалась точно так же, как сейчас.

HTML:

    <div class="formHalf">
        <label for="first_name">
            First Name*</label>
        <input id="first_name" maxlength="40" name="first_name" size="20" type="text" class="text" />
    </div>
    <div class="formHalf">
        <label for="last_name">
            Last Name*</label>
        <input id="last_name" maxlength="80" name="last_name" size="20" type="text" class="text" />
    </div>
    <div class="formWhole">
        <label for="company">
            Company</label>
        <input id="company" maxlength="40" name="company" size="20" type="text" class="text" />
    </div>
    <div class="formWhole">
        <label for="address">
            Address</label>
        <input id="address" maxlength="80" name="address" size="20" type="text" class="text" />
    </div>
    <div class="formHalf">
        <label for="city">
            City</label>
        <input id="city" maxlength="40" name="city" size="20" type="text" class="text" />
    </div>
    <div class="formHalf">
        <label for="state">
            State/Province</label><input id="state" maxlength="20" name="state" size="20" type="text"
                class="text" />
    </div>
    <div class="formHalf">
        <label for="zip">
            Zip</label><input id="zip" maxlength="20" name="zip" size="20" type="text" class="text" />
    </div>
    <div class="formHalf">
        <label for="country">
            Country</label><input id="country" maxlength="40" name="country" size="20" type="text"
                class="text" />
    </div>
    <div class="formHalf">
        <label for="email">
            Email*</label><input id="email" maxlength="80" name="email" size="20" type="text"
                class="text" />
    </div>
    <div class="formHalf">
        <label for="phone">
            Phone*</label><input id="phone" maxlength="40" name="phone" size="20" type="text"
                class="text" />
    </div>
    <div class="formWhole">
        <label for="description">
            Description</label><textarea name="description"></textarea>
    </div>
    <div class="formWhole">
        <input type="submit"  name="formSubmit" id="formSubmit">
    </div>
</div>`

SCRIPT:

<script type="text/javascript" language="javascript">
   $(document).ready(function () {
        $("#formSubmit").click(function () {
            for (i = 0; i < 1; i++) {
                var isValid = validateForm();
                if (isValid) { }
                  $("form").attr("action", "https://www.other web site that redirects back to my page after logging form");
            }
        });
    });
 function validateForm() {
        var message = "";var message2="";
        var elements = new Array("first_name", "last_name", "phone", "email");
        var userElement = new Array(" First Name", "Last Name", "Phone Number", "E-Mail Address");
        for (i = 0; i < elements.length; i++)
         {
            var x = document.getElementById(elements[i]).value;

            if (x == null || x == "") {
                if (message != "")
                    message += ", "; message += userElement[i];
            }

             if (i == 3 && x != null && x != "") {
                var atpos = x.indexOf("@");
                var dotpos = x.lastIndexOf(".");
                if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
                    message2 += "The email address is not valid.";
                }
            }


            if (i == 2 && x != null && x != "") {
                var checknumber = x.replace(/[^0-9]/g, '');
                if (checknumber.length != 10 && checknumber.length != 11) {
                    message2 += "The phone number is needs to be in format 123-456-7890 or 1-234-567-8901."; 
                }
            }
            // email and phone validation
        }
        if (message != "" || message2 != "") {
            if (message != "") {
                message += " must be filled out.";
            }
            message += message2;
            alert(message);
            return false;
        }
        return true;
    }
</script>`

Ответы [ 2 ]

0 голосов
/ 19 декабря 2011

если расширение вашей страницы - aspx, тогда добавьте атрибут runat = "server" к каждому тегу ввода данных, и тогда вы сохраните данные!

0 голосов
/ 18 декабря 2011

Самый простой способ - просто перехватить значения POST или GET на стороне сервера.Например, при использовании PHP вы можете пополнить имя, добавив следующий соответствующий тег ввода:

value="<?=$_POST['first_name']?>"

Вам следует изменить POST tot GET, если это get-action.Не забудьте дополнительно проверить на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...