Сообщение "this [0] is undefined" использует плагин проверки jQuery - PullRequest
11 голосов
/ 01 июля 2011

Я начал использовать плагин проверки jQuery.У меня было несколько проблем с отображением сообщений об ошибках, и я хотел создать тестовую страницу, на которой я мог бы поэкспериментировать с несколькими вещами.Несмотря на то, что вчера у меня работала та же самая настройка, теперь я получаю следующее сообщение:

this[0] is undefined

, глядя на код jQuery, в следующем разделе это не удается (выделенная строка выделена):

valid: function() {
    if ( $(this[0]).is('form')) {
        return this.validate().form();
    } else {
        var valid = true;
        **var validator = $(this[0].form).validate();**
        this.each(function() {
            valid &= validator.element(this);
        });
        return valid;
    }
}

глядя на него, он должен подумать, что мой валидатор не форма, но это так.Не очень понимаю, что происходит.Сбой кода происходит только при попытке распечатать результат метода valid () на консоль.Вот мой код до сих пор.Благодарен за любую помощь.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <style type="text/css">
        th {
            text-align: center;
        }
        .labelCol {
            width: 60px;
        }
    </style>
    <script type="text/javascript" src="jquery-1.6.1.full.js"></script>
    <script type="text/javascript" src="jquery.validate.full.js"></script>
    <script type="text/javascript">
        $('#myform').validate({
                        rules: {
                            thisval: "required"
                        }
        });
        console.info($('#myform').valid());
    </script>
</head>

<body>
    <form id="myform" name="myform" action="" method="post">
        <table>
            <tr>
                <th colspan="2">Header Section</th>
            </tr>
            <tr>
                <td class="labelCol">This Title</td>
                <td class="valueCol">
                    <input type="text" name="thisval" id="thisval"
                        maxlength="45" size="45" />
                </td>
            </tr>
            <tr>
                <td>
                    <input type="submit" value="submit" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

Ответы [ 4 ]

18 голосов
/ 01 июля 2011

Ваша форма #myform не загружается при выполнении скрипта, поэтому $('#myform') ничего не соответствует.Оберните ваш скрипт в готовый обработчик событий.

<script type="text/javascript">
   $(function() { // <-- add this
      $('#myform').validate({
                    rules: {
                        thisval: "required"
                    }
      });
      console.info($('#myform').valid());
   });
</script>
2 голосов
/ 01 июля 2011

Оберните ваш код в функцию готовности документа, такую ​​как:

$(function()
{

    $('#myform').validate({
                    rules: {
                        thisval: "required"
                    }
    });
    console.info($('#myform').valid());

});
1 голос
/ 24 ноября 2015

То же самое произошло здесь. Для меня это была опечатка в моем коде:

$(document).ready(function(){
    //START of validate
$('#reply').validate({
    rules:{
        message:{
            required: true,
            },  
        },
    submitHandler: function(form) {
        var data = $("#reply").serialize();
        $.ajax({
            type:"POST",
            url:"ajax/scripts/msg_crt.php",
            data:data,
            success:function(data){
                alert("Loaded");
                }
            });
        }
    });
    //END of validate
  });

$(document).on('click','#send', function(){
    if($('#replay').valid()){// <--- Here is my selector typo
        $("#replay").submit(); // <--- Here is my selector typo
        }
        return false;
    });
0 голосов
/ 03 марта 2017

В моем случае это происходит, когда вам не хватает указать идентификатор в теге формы, где вы указали в методе validate.

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