Функции на ".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" Не могли бы подсказать, из-за чего такая ошибка выдаётся и как это можно исправить? |
Круглые скобочки на конце функции означают её вызов. Если вы где-то в коде написали 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);
|
Aetae,
Спасибо большое!!! |
| Часовой пояс GMT +3, время: 16:20. |