как подключиться к самописной функции jquery [дубликат]

123
20 мая 2021, 13:10
На этот вопрос уже дан ответ здесь:
Как куда-нибудь передать функцию // почему событие вызывается сразу же? (1 ответ)
Закрыт 1 год назад.

Есть код типа такого:

<input id="val">
// ================
$.fn.myCode = function() {
  function changeVar( value ) {
    a = value;
    alert( a );
  }
  var a = 1;
}

Как мне передать значения от input к функции changeVar. Пробовал прописывать в html код на onchange, oninput ..., подключал через JavaScript типа

$('#val').on('input', changevar($('#val').get(0).value))

но ничего.

Как вызывать changeVar( value ) по вводу данных в input поле.

Answer 1

Попробуйте так:

$.fn.myCode = function() { 
  var input = $(this); 
  input.change(function() { 
    var a = input.val(); 
    console.log(a); 
  }); 
} 
 
$('#val').myCode();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<input id="val">

myCode - это плагин для jQuery, который вы создаёте для работы над какими-то объектами.

Если вам нужно реагировать на изменения инпута да и только, то можно обойтись и без создания плагина, а сделать напрямую:

<input id="val">
// ================
$('#val').change(function() {
  var a = $(this).val();
  alert(a);
});
Answer 2

в общем заработало таким образом.

$('#val').on('input', function() { changevar($('#val').get(0).value) } )

А вот строка

$('#val').on('input',  changevar( $('#val').get(0).value) )

никоем образом работать не хочет. Скорее всего какие то ограничения со стороны языка которые я не знаю пока.

READ ALSO
Большая ложь о приоритетах операторов в Javascript. Или и так сойдет?

Большая ложь о приоритетах операторов в Javascript. Или и так сойдет?

Во всех учебниках и уроках что я читал, всегда пишут что первым выполнится тот оператор в выражении, у которого больше приоритетИ вроде бы это...

116
Копирование строк в JS

Копирование строк в JS

Столкнулся со странной ситуацией, есть функция которая должна просто удалить все пробелы в строке:

87