jquery验证单击事件以获取错误消息

时间:2011-12-12 10:34:52

标签: jquery validation

我正在使用JQuery的bassistance验证插件。

要保持表单清除,我在无效字段后只放置一个字母作为Errormessage(例如“F”表示无效格式)。现在,我想通过单击字母为用户提供特殊div(#errordetails)中详细错误消息的选项。

$(".contactForm").validate({
    rules ....
}),

...

我想放置类似的东西:

$("label.error").click(function() {
    alert("The Errormessage was clicked ...");
})

我必须在哪里放置此代码?

编辑:对不起,我忘了写这个。在$(document).ready()中,事件不起作用。其他元素的点击事件工作正常,但不是$(“label.error”)

的事件

确定编辑第2部分:

验证后我的HTML:

<div class="formField cf">                          
    <label for="contactGeburt">Geb.datum *  
        <span style="font-size: 10px; color: #999">&nbsp;(dd.mm.jjjj)
        </span>
    </label>                            
    <input type="text" maxlength="10" id="gebdatum" name="gebdatum" class="textField datum error">
<label for="gebdatum" generated="true" class="error">
    <span class="errorvalue">P
    </span>
</label>                                                

这是JQUERY Part

$(document).ready(function(){
$(".contactForm").validate({
  rules: {
    gebdatum: {
        required: true,
        dateDE: true
        }
    },
}),

//This does not work
$(function() {
  $("label.error").click(function() {
    alert("The Errormessage was clicked ...");
  });
});

// This works - H1 is also on the document ;-)
$(function() {
  $("h1").click(function() {
    alert("H1 was clicked ...");
  });
});    
});

编辑第3部分:

感谢您的支持:

我测试了(有效)代码,但它不起作用。我从低音开始了这个消息:

http://jquery.bassistance.de/validate/demo/

我粘贴了这个功能:

$("label").click(function() {
  alert("The Label was clicked ...");
});

...并运行代码(控制台)。单击文本字段中的标签时,会显示alertmessage。单击“提交”按钮后,错误标签(红色)不会对事件做出反应,但输入字段的标签会显示警告框。

所以我再次从控制台运行代码(在屏幕上出现错误之后),现在显示了alterbox。

所以我认为,事件必须放在表单中的validate-event中,但我不知道正确的语法。

编辑第4部分:

以下是jsfiddle的链接,其中包含所有内容:http://jsfiddle.net/frank79/HVEXm/

感谢您的帮助!对不起那个可怜的英语......

4 个答案:

答案 0 :(得分:2)

好的,我有解决方案:

$(".contactForm").delegate("label", 'click', function() {
    alert("A Label was clicked....");
}).validate({
    rules: {
        gebdatum: {
            required: true,
            dateDE: true
        }
    }
})

调用click-Handler时,我的标签不存在。

感谢来自jquery-Forum的charlietfl,感谢JMAX为jsfiddle出场!

圣诞快乐!

答案 1 :(得分:0)

您应该将代码放在jQuery文档就绪函数中,如下所示:

$(function() {
  $("label.error").click(function() {
    alert("The Errormessage was clicked ...");
  });
});

答案 2 :(得分:0)

以下是您的原始代码:: http://jsfiddle.net/2EwUK/

  • 点击顶部的JSLint按钮时,网络应用程序会在您的代码中引发一些语法错误。
  • 您不应在$(function() { });内使用多个$(document).ready(),因为它是完全相同的代码

以下是更新后的版本:http://jsfiddle.net/mwLWR/1/并且有效。感谢评论,我还添加了对验证插件的引用。

答案 3 :(得分:0)

.click()方法只能将函数绑定到调用方法时DOM中元素的click事件。

由于错误标签稍后会添加到DOM中,因此不会受到影响。

使用.live()或jQuery 1.7+ .on()方法。

$("label").live("click", function() {
    alert("A Label was clicked....");
});