jQuery验证Uncaught TypeError:无法读取null的属性'nodeName'

Dra*_*lut 32 validation jquery-validate

我有以下代码:

$(document).ready
(
    function ()
    {
        $.validator.addMethod(
        "lessThan",
        function (value, element, param)
        {
            // bind to the blur event of the target in order to revalidate whenever the target field is updated            
            var target = $(param)
            .unbind(".validate-lessThan")
            .bind
            (
                "blur.validate-lessThan",
                function ()
                {
                    $(element).valid();
                }
            );
            return parseFloat(value) <= parseFloat(target.val());
        },
        "Valoarea trebuie sa fie mai mica sau egala decat valoarea initiala"
        );
    }
);


$('#gvListDetaliiElemTranAdaugare input[name$=Valoare]').each
    (
        function (index, domEle)
        {
            $(this).rules
            (
                "add"
                , {

                    required: true,
                    minlength: 1,
                    range: [0.1, Number.MAX_VALUE],
                    lessThan: '#ListaDetaliiElemTranModelAdaugare_' + index + '__ValoareRamasa',
                    messages:
                    {
                        required: "Valoarea este necesara!",
                        minlength: "Valoarea este necesara!",
                        range: "Valoarea este necesara!",
                        lessThan: "Valoarea trebuie sa fie mai mica sau egala cu " + $('#ListaDetaliiElemTranModelAdaugare_' + index + '__ValoareRamasa').val()


                    }
                }
            );
        }
    );
Run Code Online (Sandbox Code Playgroud)

然后,该代码失败,reeaches $(本).rules()有:Uncaught TypeError: Cannot read property 'nodeName' of null.返回的html $('#gvListDetaliiElemTranAdaugare input[name$=Valoare]')是:

[
<input data-type=?"decimal" id=?"ListaDetaliiElemTranModelAdaugare_0__Valoare" name=?"ListaDetaliiElemTranModelAdaugare[0]?.Valoare" onchange=?"OnValoareChange($(this)?.val()?, 18590 , 0)?" type=?"text" value=?"0.00000000000">?
, 
<input data-type=?"decimal" id=?"ListaDetaliiElemTranModelAdaugare_1__Valoare" name=?"ListaDetaliiElemTranModelAdaugare[1]?.Valoare" onchange=?"OnValoareChange($(this)?.val()?, 22972 , 1)?" type=?"text" value=?"0.00000000000">?
, 
<input data-type=?"decimal" id=?"ListaDetaliiElemTranModelAdaugare_2__Valoare" name=?"ListaDetaliiElemTranModelAdaugare[2]?.Valoare" onchange=?"OnValoareChange($(this)?.val()?, 23036 , 2)?" type=?"text" value=?"0.00000000000">?
, 
<input data-type=?"decimal" id=?"ListaDetaliiElemTranModelAdaugare_3__Valoare" name=?"ListaDetaliiElemTranModelAdaugare[3]?.Valoare" onchange=?"OnValoareChange($(this)?.val()?, 23038 , 3)?" type=?"text" value=?"0.00000000000">?
, 
<input data-type=?"decimal" id=?"ListaDetaliiElemTranModelAdaugare_4__Valoare" name=?"ListaDetaliiElemTranModelAdaugare[4]?.Valoare" onchange=?"OnValoareChange($(this)?.val()?, 425306 , 4)?" type=?"text" value=?"0.00000000000">?
, 
<input data-type=?"decimal" id=?"ListaDetaliiElemTranModelAdaugare_5__Valoare" name=?"ListaDetaliiElemTranModelAdaugare[5]?.Valoare" onchange=?"OnValoareChange($(this)?.val()?, 425308 , 5)?" type=?"text" value=?"0.00000000000">?
, 
<input data-type=?"decimal" id=?"ListaDetaliiElemTranModelAdaugare_6__Valoare" name=?"ListaDetaliiElemTranModelAdaugare[6]?.Valoare" onchange=?"OnValoareChange($(this)?.val()?, 425309 , 6)?" type=?"text" value=?"0.00000000000">?
, 
<input data-type=?"decimal" id=?"ListaDetaliiElemTranModelAdaugare_7__Valoare" name=?"ListaDetaliiElemTranModelAdaugare[7]?.Valoare" onchange=?"OnValoareChange($(this)?.val()?, 425310 , 7)?" type=?"text" value=?"0.00000000000">?
]
Run Code Online (Sandbox Code Playgroud)

Dra*_*lut 80

我发现了这个问题.

问题是我尝试验证的HTML未包含在<form>...</form>标记中.

我一做到这一点,就得到了一个context不是空的.

  • 这个抓住了我差不多2个小时......元素必须在一个表格内.Duhhhh :(感谢分享!:)请注意:在我的情况下,我试图在输入文件中添加规则.这是我在Firebug上有用的错误:在这个jQuery行上的`elem null`:`f(elem.nodeType && elem.nodeType!== 1 && elem.nodeType!== 9)` (5认同)
  • 它让我像过去一小时的白痴,字段都是一个表单,但是当jQuery对话框打开时,它将它们移出表单,然后验证失败,出现一个奇怪的错误信息.为什么jQuery UI不在控制台中发出警告消息? (3认同)

小智 5

发生问题是因为我试图在创建 HTML 元素之前绑定它。

我的脚本加载在 HTML 之上,并且需要加载在我的 HTML 代码的底部。