如何检测是否在jQuery中创建了span

时间:2012-06-07 15:53:22

标签: jquery asp.net-mvc-3

这实际上与ASP.NET MVC有关。

提交表单后,将执行模型验证。如果检测到错误,则错误消息将显示在<span>中。我们应该能够使用jQuery $('span.field-validation-error')来掌握它。但是我们应该为这个“OnCreated”绑定什么事件?

我已经尝试过$('span.field-validation-error').change(function (e) {$('span.field-validation-error').load(function (e) {等等。但这些都没有奏效。

那么正确的事件名称是什么?

---- ----更新

我们的目标是自定义显示的错误消息。如果可以在创建<span>标签时对其进行编辑,我们将能够显示感叹号图标并将这些错误消息放在工具提示中。例如。

3 个答案:

答案 0 :(得分:1)

GUESS 你可以:

var checkTimer = setInterval(function() {
        if ($('span.field-validation-error').length > 0) {
            //yay :D it exists!
            alert("YEP");
            clearInterval(checkTimer);
        } else {
            //derp...    
            console.log("nope");
        }
}, 50);
setTimeout(function() {
    document.body.innerHTML = "<span class='field-validation-error'>word</span>";
}, 5000);​

例:
http://jsfiddle.net/neuroflux/Ynz5b/1/

[edit] 是的...它很乱,我讨厌定时器和间隔 - 但这是一种方法来做到这一点...

[编辑2] 检查元素是否存在的参考:http://aaronrussell.co.uk/legacy/check-if-an-element-exists-using-jquery/

答案 1 :(得分:0)

如果我理解正确的话,你真正想做的就是在另一个函数中包含一些代码,并在span.field-validation-error附加到DOM的同时调用它。

没有onCreated事件处理程序,onLoad也不适用于DOM节点。

答案 2 :(得分:0)

不确定我是否真的推荐这种方法用于你正在做的事情,但你可以考虑挂钩jQuery验证器settings.showErrors属性来操作错误消息,然后调用默认方法(defaultShowErrors)然后将它们显示为通常