firedragon
@firedragon
Senior .NET developer

Почему jQuery не возвращает значение?

Есть вот такая функция
return false из нее не отрабатывает, подозреваю что фишка в самом джиквери и контексте, кто с таким сталкивался?
PreSaveAction возвращает True Или false и соответственно форма сохраняется или нет. но при прямом вызове что то идет не так и приходится передавать значение за пределы куска кода

// SharePoint specific "PreSaveAction" function  
function PreSaveAction() {
    
        // сохранить как шаблон
    // SaveAsTemplate_949c73f0-a851-4c62-9e2f-82570991374b_$RadioButtonChoiceField0
    var result = true;
    $("input[id^='SaveAsTemplate0_']").each(function( index ) {
  		console.log( index + ": " + $( this ).val()  + $(this).is(':checked'));
  		if( $ (this).val() == 'Да' && $(this).is(':checked') ) {
  		    // проверяем что бы был указан файл
  		    // TemplateName_0e05ec59-36b2-4b6f-a98e-97017d51ab87_$TextField
  		    var template = $("input[id^='TemplateName0_']").val();
  		    if(template == ''){
  		    	$("input[id^='TemplateName0_']").parent().append("<span class='ms-formvalidation ms-csrformvalidation'>Укажите имя шаблона</span>");
        		$("input[id^='TemplateName0_']").focus();

  		    	result = false;
  		    	return false;
  		  
  		    }
  		    var regex = /([a-zA-Z0-9-_])*\.json$/g;
			var found = template.match(regex);
			console.log(found)
  		    if(found && found.length == 1){
  		    	

  		    }
  		    else{  		       
  		    	$("input[id^='TemplateName0_']").parent().append("<span class='ms-formvalidation ms-csrformvalidation'>Имя файла может состоять из букв английского алфавита и заканчиваться .json. Например Test-01_02.json</span>");
        		$("input[id^='TemplateName0_']").focus();
        		result = false;
        		return false;
  		    }
  		}
  		
	});
	
    
    return result;
}
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
VoidVolker
@VoidVolker Куратор тега JavaScript
Разработчик ПО и IT-инженер
В функции PreSaveAction только один возврат - который в конце. А вот в функции-итераторе ... .each(function( index ) {, возврат - это просто выход из этой функции, а не из внешней, при этом цикл продолжит работу. Если надо выйти из функции PreSaveAction в цикле - то и используйте цикл, а не отдельный итератор с функцией.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы