我有以下代码:
$(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()
}
}
);
}
);
代码失败然后它将$(this).rules()与Uncaught TypeError: Cannot read property 'nodeName' of null
重新交换。
$('#gvListDetaliiElemTranAdaugare input[name$=Valoare]')
返回的html是:
[
<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">
]
答案 0 :(得分:80)
我找到了问题。
问题是我尝试验证的HTML未包含在<form>...</form>
标记中。
一旦我这样做,我的 context
就不是空的了。
答案 1 :(得分:4)
问题发生是因为我在创建HTML元素之前尝试绑定它。
我的脚本已加载到HTML之上,需要在HTML代码的底部加载。
答案 2 :(得分:4)
我在Backbone项目中遇到了这个问题:我的视图包含一个输入并重新渲染。 这是发生的事情(复选框的示例):
解决方案是更新输入而不是完全重新渲染它。以下是实施的概念:
var MyView = Backbone.View.extend({
render: function(){
if(this.rendered){
this.update();
return;
}
this.rendered = true;
this.$el.html(tpl(this.model.toJSON()));
return this;
},
update: function(){
this.$el.find('input[type="checkbox"]').prop('checked', this.model.get('checked'));
return this;
}
});
这样您就不必更改任何调用render()的现有代码,只需确保update()可以让您的HTML保持同步并且您可以继续使用。
答案 3 :(得分:2)
我在升级到Bootstrap 4后遇到nodeName
的类似错误时找到了这个答案。问题是这些标签没有nav
和nav-tab
类;将这些内容添加到<ul>
元素可以解决问题。
答案 4 :(得分:1)
当“”中的<th>
个标记的数量与<tfoot>
部分中的数量不匹配时,我遇到了这个问题
<thead>
<tr>
<th></th>
<th>Subject Areas</th>
<th></th>
<th>Option(s)</th>
<tr>
</thead>
<tbody></tbody>
<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
答案 5 :(得分:0)
我遇到了这个问题,原因是该面板位于[data-role =“page”]元素之外。
答案 6 :(得分:0)