jquery事件相关问题

时间:2012-01-28 08:41:50

标签: jquery validation

我正在构建一个非常简单的表单验证,它仅验证必填字段。这是实验性的,我知道有很多表单验证插件。

我正在做的是调用一个函数,以这种格式传递表单id和javascript对象

{
  control_id1 : {required : 'message to display if control is empty'},
  control_id2 : {required : 'message to display if control is empty'},
  ...
}

该函数的作用是使用for(var k in obj){...}循环遍历js对象并检查具有给定id的控件是否具有空值,如果是,则将span标记附加到控件的具有给定消息的直接父母。

它还将“模糊”事件绑定到该控件,以便在失去焦点时,验证可以再次应用于控件。

您可以在此处查看此操作:http://jsfiddle.net/yvjZF/

正如您所看到的,当您单击按钮时,它显示消息正常。但如果控件失去焦点,则会显示错误信息。

我找不到它的原因,也许我在事件模型中有误解。对此的任何帮助将不胜感激。

谢谢,
安键

1 个答案:

答案 0 :(得分:1)

不太清楚为什么,但是当我对以下代码进行更改时它开始工作:

for(var cid in validation_data)
{ 
    $('#' + cid).blur
    (
        function()
        {
            // validate_control($(this),validation_data[cid]);
            validate_control($(this),validation_data[$(this).attr('name')]);
        }
    );
}

在使用ActionScript进行编码时,我常常遇到这个问题,并且它与循环迭代器有关,这会影响循环的先前迭代。我唯一的解释是,cid变量可能是通过引用传递而不是按值传递的。