如何验证字段的值
编写 on_field_validate 事件处理程序来验证字段的值。
例如,当调用 post 方法将记录保存时, 会触发事件;当用户离开用于编辑单价字段值的输入框时,也会触发事件。
function on_field_validate(field) {
if (field.field_name === 'unitprice' && field.value <= 0) {
return 'Unit price must be greater that 0';
}
}
举个例子,以下是不使用 on_field_validate 方法的代码, 它们检查单价字段的值,防止用户输入小于或等于零的值:
function on_edit_form_shown(item) {
item.each_field( function(field) {
var input = item.edit_form.find('input.' + field.field_name);
input.blur( function(e) {
var err;
if ($(e.relatedTarget).attr('id') !== "cancel-btn") {
err = check_field_value(field);
if (err) {
item.alert_error(err);
input.focus();
}
}
});
});
}
function check_field_value(field) {
if (field.field_name === 'album' && !field.value) {
return 'Album must be specified';
}
if (field.field_name === 'unitprice' && field.value <= 0) {
return 'Unit price must be greater that 0';
}
}
在 on_edit_form_shown 事件处理程序中, 使用 each_field 方法来迭代访问所有字段, 并找到每个字段对应的输入框(如果存在)。每个输入框都有一个包含字段名称的类 ( field_name )。
然后,我们为它分配一个 jQuery blur 事件,在该事件中我们调用 check_field_value 函数,如果它返回包含错误信息的文本字符串,我们会警告用户并将焦点定位到输入框。
在调用函数之前,我们检查是否按下了 “取消” 按钮。
我在实体的模块中定义的 on_edit_form_shown 事件处理程序,所以只在定义它的模块中有效。
我们可以在任务客户端模块中声明以下事件处理程序,
以便在我们需要启用此字段验证的任何模块中编写 check_field_value 函数。
当编辑表单显示后,会首先为每个实体调用任务的
on_edit_form_shown 事件处理程序。 参考 表单窗体事件 。
function on_edit_form_shown(item) {
if (item.check_field_value) {
item.each_field( function(field) {
var input = item.edit_form.find('input.' + field.field_name);
input.blur( function(e) {
var err;
if ($(e.relatedTarget).attr('id') !== "cancel-btn") {
err = item.check_field_value(field);
if (err) {
item.alert_error(err);
input.focus();
}
}
});
});
}
}
在这个事件处理程序中,我们检查实体是否有 check_field_value 属性。
在模块中声明的每个函数,都会成为其所属实体的一个属性。