【发布时间】:2011-01-21 04:24:02
【问题描述】:
我想在添加/编辑时验证列表项的字段并停止保存操作并提供用户在该页面本身所做的错误信息。
例如,如果我想阻止用户在保存之前根据另一个字段的特定状态设置几个字段,我不能将该字段设为必填。
【问题讨论】:
标签: sharepoint validation field
我想在添加/编辑时验证列表项的字段并停止保存操作并提供用户在该页面本身所做的错误信息。
例如,如果我想阻止用户在保存之前根据另一个字段的特定状态设置几个字段,我不能将该字段设为必填。
【问题讨论】:
标签: sharepoint validation field
使用 PreSaveAction。
向您的页面添加一个名为 PreSaveAction 的 javascript 函数(最好是创建自定义列表模板并且可以修改将用作 EditForm 和 NewForm 的 aspx 页面,否则尝试使用内容编辑器 Web 部件或通过修改主Page)并从那里进行所有自定义验证。
例如,我刚刚在一个项目中使用它,其中我们有 3% 的字段必须等于 100%。我使用了以下 javascript,效果很好:
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var len = identifier.length;
var tags = document.getElementsByTagName(tagName);
for (var i = 0; i < tags.length; i++) {
var tempString = tags[i].id;
if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
return tags[i];
}
}
return null;
}
function PreSaveAction() {
var top = getTagFromIdentifierAndTitle("input", "TextField", "Top %");
var middle = getTagFromIdentifierAndTitle("input", "TextField", "Middle %");
var bottom = getTagFromIdentifierAndTitle("input", "TextField", "Bottom %");
var valid = (100 == parseInt(top.value) + parseInt(middle.value) + parseInt(bottom.value));
if (!valid) {
alert("Top %, Middle %, and Bottom % must equal 100% when added.");
}
return valid;
}
【讨论】:
<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"> 元素内,这对我有用。
您可能必须开始创建自定义字段控件才能完成这项工作。然而,一旦你开始定制化的道路,你就有几个选择要考虑。
您可能想考虑创建自定义 asp.net 表单并将其编码以发布到列表或考虑 InfoPath 表单。
【讨论】: