您的位置:首页 > 其它

通过sharepoint 客户脚本,验证列表添加页面上的时间

2013-10-24 13:20 453 查看
项目上遇到一个需求,在我们已经开发好的"会议室预约"系统上,增加一个对时间控制,具体要求如下

  只有北京会议,除管理员以外的人在预定会议室时,一次只能预约两小时,不能预约30以后的会议室。

  经过考虑以觉得,只有通过sharepoint客户端脚本实现是最简单的,以下是实现方式

引入net的验证控件

<asp:customvalidator id="CustomValidator2" runat="server" ErrorMessage="不可预定三十天以后会议室!" ClientValidationFunction="valiatorEndTime"></asp:customvalidator>
<asp:customvalidator id="CustomValidator3" runat="server" ErrorMessage="该用户预定会议室的时间一次不得超过两小时间!" ClientValidationFunction="valiatorTime"></asp:customvalidator>

JS实现代码:

var falg=false;
ExecuteOrDelayUntilScriptLoaded(getAllSiteGroups1, "sp.js");

//Get All The Site Groups in SharePoint Using ECMAScript
var groupCollection;
var id=0;
function getAllSiteGroups1() {
var clientContext = new SP.ClientContext();
this.groupCollection = clientContext.get_web().get_siteGroups();
clientContext.load(groupCollection);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceededgetAllSiteGroups),
Function.createDelegate(this, this.onQueryFailedgetAllSiteGroups));

}

function onQuerySucceededgetAllSiteGroups() {
thisHREF = document.location.href;
if(thisHREF.indexOf("SPMeetingRoomBooking")>0)
{
var groupName = 'Site Groups: \n';
var groupsEnumerator = this.groupCollection.getEnumerator();
while (groupsEnumerator.moveNext()) {
var group = groupsEnumerator.get_current();
if(group.get_title()=="会议室管理员")
{
id=group.get_id();
}
}
getAllSiteGroups();
}
else
{
falg= true;
}

}

function onQueryFailedgetAllSiteGroups(sender, args) {}

//Get All The Site Groups in SharePoint Using ECMAScript
var groupCollection;
function getAllSiteGroups() {
var context = new SP.ClientContext();
var siteColl = context.get_site();
var web = siteColl.get_rootWeb();
var groupCollection = web.get_siteGroups();

// Get the Our Group's ID
var _group = groupCollection.getById(id); // ID of the Group that we are checking
var users = _group.get_users(); // Get all Users of the group
context.load(_group);
context.load(users);
this._users = users;
this._currentUser = web.get_currentUser(); // Get current user
context.load(this._currentUser);
context.executeQueryAsync(Function.createDelegate(this, this.CheckUserSucceededUserIsInGroup),
Function.createDelegate(this, this.CheckUserfailedUserIsInGroup));

}
//The below Checks  if User is the member of the specified group
function CheckUserSucceededUserIsInGroup() {
//debugger;
IsInThisGroupFlag = false;
var userLoginName = this._currentUser.get_loginName();
if(userLoginName.split('\\')[1]=="system")
{
falg= true;
}
else if (this._users.get_count() > 0) {
var _usersEnum = this._users.getEnumerator();
while (_usersEnum.moveNext()) {
var user = _usersEnum.get_current();

if (user.get_loginName() == userLoginName) {
//debugger;
falg= true;
}
else
{
falg=false;
}

}
}
}

function CheckUserfailedUserIsInGroup() {
falg=false;
}

function searchFieldEditorElement(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) {
return tags[i];
}
}
return null;
}
function valiatorTime(source,args)
{
var txtstartDate = searchFieldEditorElement("input", "DateTimeFieldDate", "开始时间");
var txtendDate = searchFieldEditorElement("input", "DateTimeFieldDate", "结束时间");
var startDateID = txtstartDate.id;
var startDataHoursID=startDateID +"Hours";
var startDataMinutesID=startDateID +"Minutes";
var startDataValue=document.getElementById(startDateID ).value;
var startDataHoursValue=document.getElementById(startDataHoursID).value;
var startDataMinutesValue=document.getElementById(startDataMinutesID).value;
var startTimestr=startDataValue+" "+startDataHoursValue+startDataMinutesValue+":00";
var startTime=new Date(startTimestr);
var endDateID = txtendDate.id;
var endDataHoursID=endDateID+"Hours";
var endDataMinutesID=endDateID+"Minutes";
var endDataValue=document.getElementById(endDateID ).value;
var endDataHoursValue=document.getElementById(endDataHoursID).value;
var endDataMinutesValue=document.getElementById(endDataMinutesID).value;
var endTimestr=endDataValue+" "+endDataHoursValue+endDataMinutesValue+":00";
var endTime=new Date(endTimestr);
var betTime=(endTime.getTime()-startTime.getTime())/(1000*60*60);
if(betTime>2 && falg==false)
{
args.IsValid=false;
}
else
{
args.IsValid=true;
}

}

function valiatorEndTime(source,args1)
{
var txtendDate = searchFieldEditorElement("input", "DateTimeFieldDate", "结束时间");
var endDateID = txtendDate.id;
var endDataHoursID=endDateID+"Hours";
var endDataMinutesID=endDateID+"Minutes";
var endDataValue=document.getElementById(endDateID ).value;
var endDataHoursValue=document.getElementById(endDataHoursID).value;
var endDataMinutesValue=document.getElementById(endDataMinutesID).value;
var endTimestr=endDataValue+" "+endDataHoursValue+endDataMinutesValue+":00";
var endTime=new Date(endTimestr);
var betTime=(endTime.getTime()-new Date())/(1000*60*60*24);
if(betTime>30 && falg==false)
{
args1.IsValid=false;
}
else
{
args1.IsValid=true;
}

}
_spBodyOnLoadFunctionNames.push("valiatorField");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: