我正在构建一个非常简单的表单验证,它只验证必填字段。这是实验性的,我知道有很多表单验证插件。
我所做的就是调用一个函数,将表单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标记附加到具有给定消息的控件的直接父级。
它还将"blur“事件绑定到该控件,以便在失去焦点时可以再次将验证应用于该控件。
你可以在这里看到这一点:http://jsfiddle.net/yvjZF/
正如你所看到的,当你点击按钮时,它会显示消息ok。但是如果控件失去焦点,它就会显示错误的消息。
我找不到原因,可能是我对事件模型有误解。在这方面的任何帮助都将非常感谢。
谢谢,
安然
发布于 2012-01-28 19:31:10
不太清楚为什么,但当我更改以下代码时,它就开始工作了:
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变量可能是通过引用而不是按预期的值传递的。
https://stackoverflow.com/questions/9043987
复制相似问题