Почему метод validQ (JQuery) всегда возвращает True? - PullRequest
4 голосов
/ 02 сентября 2010

У меня есть простая форма HTML:

<form id="frmNewCategory">
    <span>New Category Name:</span>
    <input type="text" id="txtNewCategoryName">
    <label>Amount:</label>
    <input type="text" id="txtNewCategoryAmount">
    <br>
    <input type="submit" value="Create" class="importantButton button" id="btnNewCategory">
    <input type="button" value="Cancel" class="button" id="btnCancelNewCategory">
</form>

И немного JQuery-управляемого JavaScript с помощью плагина проверки , который срабатывает при нажатии btnNewCategory:

function onNewCategoryClick(event)
{

    $("#frmNewCategory").validate(
        {
            rules:
            {
                txtNewCategoryName : { required: true },
                txtNewCategoryAmount : { required: true, number: true }
            },
            messages:
            {
                txtNewCategoryName : { required: "*" },
                txtNewCategoryAmount: { required: "*", number: "Invalid Amount." }
            }
        });


    if (!$("#frmNewCategory").valid())
        return;

    event.preventDefault();
    var cmd = cmdFactory.createUndoableNewCategoryCommand($(this));
    cmdBus.handleCommand(cmd);  
}

Предполагается, что приведенный выше метод проверяет frmNewCategory. Проблема в том, что даже если форма имеет недопустимые значения или вообще не имеет значений, метод .valid () все равно возвращает True.

Есть идеи? Что я делаю не так?

Ответы [ 3 ]

14 голосов
/ 02 сентября 2010

Правила принимают форму ввода "имена", а не "идентификаторы":

      <input type="text" name="txtNewCategoryName" />
      <input type="text" name="txtNewCategoryAmount" />
7 голосов
/ 02 сентября 2010

Вместо:

<input type="text" id="txtNewCategoryName">
<input type="text" id="txtNewCategoryAmount">

Использование:

<input type="text" name="txtNewCategoryName">
<input type="text" name="txtNewCategoryAmount">
1 голос
/ 17 октября 2012

Этот шаблон работал для меня раньше:

$(".required").filter(function () { return $(this).val() == ""; }).addClass("invalidInput");

if (this.formWrp.valid() && this.formWrp.find(".invalidInput").length == 0) 
     return true;

После этого кажется, что проверка активирована.

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