在presaveaction

时间:2015-10-16 14:11:21

标签: javascript sharepoint

我有一个名为" ViewItem"这又称了两个功能:"成功"并且"失败"。当"成功"调用它并检查值是否存在,如果值存在则返回true,如果值不存在则返回false。最后,我有一个名为" PresaveAction"这个函数的作用是检查一个值是否为"是"或"不",如果"否"它返回true并允许我保存,我想要实现的是,如果值是"是"称之为成功"以前的功能,取决于"成功"返回true或false允许我保存。那么如何将PreSaveAction函数传递给"成功"返回?



function ViewItem()
{

var context = new SP.ClientContext.get_current();
var web = context.get_web();
var list = web.get_lists().getByTitle('demoTrainingRoom2');
var query = SP.CamlQuery.createAllItemsQuery();
allItems = list.getItems(query);
context.load(allItems, 'Include(Title, EventDate, time2)');

context.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
}



function success() {
 
var currentTitle = SPUtility.GetSPFieldByInternalName('EventDate').GetValue(); 
for(var i = 0; i < this.allItems.get_count(); i++){
					 var item = this.allItems.get_item(i);
					 console.log(item.get_item('time2') + ' - ' + currentTitle );
					                      
                     if (currentTitle == item.get_item('time2')){
                     alert('There is an event with the same Start Date on DemoTrainingRoom2' + ' ' + item.get_item('time2') + ' - ' + currentTitle );
                     
                       
                      return true; // or item
                       
                                                             
				      }
				  }

				  
                  return false;
				}
				
function failed(sender, args) {
alert("failed. Message:" + args.get_message());
}


function PreSaveAction()    {



var time = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
alert(time + " Current Start Time");
  
if(SPUtility.GetSPField('demoField').GetValue() == "no")
{
     
     alert('No need for validation');
     return true; // save file
    }
    

    else
{
   
	alert('Need to validate date');
     
    //here is where i need to call the result from success 
  
	return false; // don't save file
	}
	
}
&#13;
&#13;
&#13;

@Thriggle你有这样的建议吗

&#13;
&#13;
var result; //global variable

function ViewItem()
{

var context = new SP.ClientContext.get_current();
var web = context.get_web();
var list = web.get_lists().getByTitle('demoTrainingRoom2');
var query = SP.CamlQuery.createAllItemsQuery();
allItems = list.getItems(query);
context.load(allItems, 'Include(Title, EventDate, time2)');

context.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
}



function success() {
 
var currentTitle = SPUtility.GetSPFieldByInternalName('EventDate').GetValue(); 
for(var i = 0; i < this.allItems.get_count(); i++){
					 var item = this.allItems.get_item(i);
					 console.log(item.get_item('time2') + ' - ' + currentTitle );
					                      
                     if (currentTitle == item.get_item('tiempo2')){
                     alert('There is an event with the same Start Date on DemoTrainingRoom2' + ' ' + item.get_item('time2') + ' - ' + currentTitle );
                     
                      var result = "Yes"; 
                     
                      return true; // or item
                       
                                                             
				      }
				  }

				  var result = "No";
				   
				  return false;
				}
				
function failed(sender, args) {
alert("failed. Message:" + args.get_message());
}


function PreSaveAction()    {



var time = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
alert(time + " Current Start Time");


if(SPUtility.GetSPField('demoField').GetValue() == "no")
{
     
     alert('No need for validation');
     return true;
    }
    

   else if(SPUtility.GetSPField('demoField').GetValue() == "yes" && result == "Yes") 
   {
  alert(result);
  //return false;
}	

else if(SPUtility.GetSPField('demoField').GetValue() == "yes" && result == "No") 
   {
  alert(result);
  //return false;
}	


}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

我就这样做了

var originalSaveButtonClickHandler = function(){};

$(document).ready(function () {
var saveButton = $("[name$='diidIOSaveItem']") //gets form save button and ribbon save button
  if (saveButton.length > 0) {
    originalSaveButtonClickHandler = saveButton[0].onclick;  //save original function
  }
  $(saveButton).attr("onclick", "PreSaveAction2()"); //change 		});
});
	//override the default PreSaveAction
	
	//custom PreSaveAction
	function PreSaveAction2(callback) {
		alert("iniciando validacion");
		var time = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();	
		if(SPUtility.GetSPField('demoField').GetValue() == "no") {
			alert('No need for validation');
			originalSaveButtonClickHandler();
			//return true;
		} 
		else if(SPUtility.GetSPField('demoField').GetValue() == "yes") {
		
			var resultado1 = ViewItem('demoTrainingRoom2').then(
					function(allItems) {
						var currentTitle = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
						var res = "No";
						for (var i = 0; i < allItems.get_count(); i++) {
							var item = allItems.get_item(i);
							console.log(item.get_item('tiempo2') + ' - ' + currentTitle );
							if (currentTitle == item.get_item('tiempo2')){
								res = "Si"; 
								console.log('There is an event with the same Start Date on DemoTrainingRoom2' 
									+ ' ' + item.get_item('tiempo2') + ' - ' + currentTitle);
        					}
						}
						if (res == "Si") {
							alert(res + " there's an event on room 2");
							//return false;
						} else {
							alert(res + " no event on 2");
							originalSaveButtonClickHandler();
							//return true;
						}	
					},
					function (sender, args) {
						alert("failed. Message:" + args.get_message());
					}
			);
			
		}				
	}

	function ViewItem(listTitle) {

		var deferred = $.Deferred();

		var context = new SP.ClientContext.get_current();
		var web = context.get_web();
		var list = web.get_lists().getByTitle(listTitle);
		var query = SP.CamlQuery.createAllItemsQuery();
		var allItems = list.getItems(query);
		context.load(allItems, 'Include(Title, EventDate, tiempo2)');
		context.executeQueryAsync(
				Function.createDelegate(this, 
					function () { deferred.resolve(allItems); } ),
				Function.createDelegate(this,
					function (sender, args) { deferred.reject(sender, args); }));
	
		return deferred.promise();
	}