Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.06.2023, 08:40
Аспирант
Отправить личное сообщение для Булат Азат улы Посмотреть профиль Найти все сообщения от Булат Азат улы
 
Регистрация: 07.09.2016
Сообщений: 83

Функции на ".on("input", "#id", function(){});"
Всех приветствую, товарищи!

Написал несколько одинаковых функций:
$("body").on("input", "#name", function() {
	if($(this).val().length > 1){
		$.ajax ({
			url: ajaxFile,
			type: "POST",
			data: ({
				toima: "nameList",
				inpVal: $(this).val()
			}),
			dataType: "html",
			success: function(data) {
				$(".nameListTop").remove();
				$("#nameTd").append(data);
			}
		});
	}
});

И для того, чтобы не повторять, вывел функцию отдельно и хотел вызывать его параметрами:
function autocomplete1 (btnName, nameTd) {
	if($(this).val().length > 1){
		$.ajax ({
			url: ajaxFile,
			type: "POST",
			data: ({
				toima: btnName,
				inpVal: $(this).val()
			}),
			dataType: "html",
			success: function(data) {
				$(".nameListTop").remove();
				$(nameTd).append(data);
			}
		});
	}
}
$("body").on("input", "#name", autocomplete1 ("nameList", "#nameTd"));

$("body").on("input", "#tel", autocomplete1 ("telList", "#telTd"));


Но так выдаёт ошибку, скрипт jQuery тоже затрагивает:
"Uncaught TypeError: can't access property "toLowerCase", e.nodeName is undefined
val jQuery
autocomplete1 https://ostaservis.tatar/js/scriptMoharrir.js:18
<anonymous> https://ostaservis.tatar/js/scriptMoharrir.js:36"

Не могли бы подсказать, из-за чего такая ошибка выдаётся и как это можно исправить?
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2023, 09:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

Круглые скобочки на конце функции означают её вызов. Если вы где-то в коде написали func() - в этом месте будет не функция, а то что она вернула.

function func() {
  return 'value'
}

$("body").on("input", "#name", func());
// тоже самое что
$("body").on("input", "#name", 'value');
Если функция ничего не возвращает(нет return) - то там будет undefined.

Если бы тебе не нужны были особые параметры для каждого случая - можно было бы ограничиться красиво:
$("body").on("input", "#tel", autocomplete1);


Но раз они нужны, то либо делать так:
function autocomplete1 (btnName, nameTd) {
  return function() {
    if($(this).val().length > 1){
      $.ajax ({
        url: ajaxFile,
        type: "POST",
        data: ({
          toima: btnName,
          inpVal: $(this).val()
        }),
        dataType: "html",
        success: function(data) {
          $(".nameListTop").remove();
          $(nameTd).append(data);
        }
      });
    }
  }
}
$("body").on("input", "#name", autocomplete1 ("nameList", "#nameTd"));
$("body").on("input", "#tel", autocomplete1 ("telList", "#telTd"));


Либо доставать эти параметры внутри:
var paramsTable = {
  name: ["nameList", "#nameTd"],
  tel: ["telList", "#telTd"]
}

function autocomplete1 () {
  var [btnName, nameTd] = paramsTable[this.id];
  if($(this).val().length > 1){
    $.ajax ({
      url: ajaxFile,
      type: "POST",
      data: ({
        toima: btnName,
        inpVal: $(this).val()
      }),
      dataType: "html",
      success: function(data) {
        $(".nameListTop").remove();
        $(nameTd).append(data);
      }
    });
  }
}
$("body").on("input", "#name, #tel", autocomplete1);
__________________
29375, 35

Последний раз редактировалось Aetae, 17.06.2023 в 09:16.
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2023, 08:16
Аспирант
Отправить личное сообщение для Булат Азат улы Посмотреть профиль Найти все сообщения от Булат Азат улы
 
Регистрация: 07.09.2016
Сообщений: 83

Aetae,
Спасибо большое!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как показать пользовательские функции объекта test? Katy93 Общие вопросы Javascript 1 12.12.2021 06:56
Передача результата функции, другой функции Aleksandr Chirkov Элементы интерфейса 3 24.06.2017 17:32
Можно ли так использовать callback функции? Denwf Node.JS 2 14.03.2017 10:20
Изменение прототипа функции tsigel Общие вопросы Javascript 11 15.05.2014 01:03
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21