Могу ли я улучшить свою проверку? - PullRequest
1 голос
/ 10 января 2011

Итак, я хочу проверить свою форму с помощью jQuery, вот как я это себе представляю, и это работает, но это лучший способ сделать это, и, возможно, я могу сделать это более эффективно с меньшим количеством кода?

<script type="text/javascript">
    $(document).ready(function()
    {
        $("#frmCatAdd").submit(function()
        {
            var name = $("#edtName").val();

            if (name == "")
                $("#edtName").css("border", "1px solid red")
            else
                $("#frmCatAdd").submit();

            return false;
        });
    });
</script>

Ответы [ 6 ]

2 голосов
/ 10 января 2011

Попробуйте взглянуть на jValidate , чтобы упростить и ускорить выполнение вашей задачи.Я использую его так же регулярно, как и при создании новых форм.

Однако я настоятельно рекомендую проверять и на стороне сервера.Все, что пользователь должен сделать, это отключить Javascript, чтобы победить ваши идеальные правила проверки.

1 голос
/ 10 января 2011

Одна вещь, которую вы могли бы улучшить, это избавиться от бесконечного цикла.Позвонив .submit() из .submit(), вы сделали цикл.

В этом случае вы можете использовать собственный submit.

$("#frmCatAdd").submit(function() {
    var name = $("#edtName").val();

    if (name == "")
        $("#edtName").css("border", "1px solid red")
    else
        this.submit(); // call native submit method instead

    return false;
});

Хотя @jПредложение Энди избавиться от else и переместить return false в if() лучше.Вызов submit из submit важнее, если вы выполняете асинхронный код в обработчике.

1 голос
/ 10 января 2011

Предложение:

$(document).ready(function() {
    $("#frmCatAdd").submit(function() {
        var $edtname = $("#edtName"),
            name     = $edtname.val();

        if (!$.trim(name).length) {
            $edtName.css("border", "1px solid red")
            return false;
        }
    });
});
1 голос
/ 10 января 2011

Да, есть - НЕ полагайтесь только на валидацию JavaScript.Вам также необходимо выполнить проверку на стороне сервера !!Это чрезвычайно важно.Если я отключу JavaScript, я обойду всю вашу проверку.

0 голосов
/ 10 января 2011

Очевидный ответ:

<form id=frmCatAdd>
<input id=edtName required type=text>
</form>

Конечно, я должен повторить мнение, что вам также потребуется проверка на стороне сервера.

0 голосов
/ 10 января 2011
$("#frmCatAdd").submit(function() {
    $e = $(this).find("#edtName");
    if (!$.trim($e.val()).length) {
        $e.css("border", "1px solid red")
        return false;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...