0

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

<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 поле.

  • а к чему тут самописная ф-ция jquery ? – Rostyslav Kuzmovych Aug 08 '19 at 07:21
  • Я просто новичок в javascript / jquery и не могу пока правильно изъясняться. Если считать, что $.fn.myCode - это самописный плагин, то функция внутри плагина тоже самописная. – skobanev Aug 08 '19 at 07:24
  • тогда просто поясните что вам нужно сделать, желательно в вопросе, не в коментах) – Rostyslav Kuzmovych Aug 08 '19 at 07:25
  • changeVar( value )? как вызвать эту функцию из HTML страницы ? – skobanev Aug 08 '19 at 07:26
  • никак , она живет внутри другой ф-ции и только оттуда ее можно позвать – Rostyslav Kuzmovych Aug 08 '19 at 07:27

2 Answers2

0

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

$.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);
});
sneas
  • 1,394
  • если бы, но пишу именно плагин ( собственное отображение табличных данных с select ом и навигацией по клавишам.) и стопарнулся на вводе поисковой строки. Пробовал рисовать input из плагина, но он работает Один раз, пока идет обработка плагина. – skobanev Aug 08 '19 at 07:34
0

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

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

А вот строка

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

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

  • В первом варианте вы добавли саму функцию в виде function(){...} - и она срабатывает после события. А во втором - (function(){....})() сразу разместили туда результат вызова функции, вот и вся разница). Если бы аргумент не требовался, можно было .on('input', changevar); - без скобок, т.е. сама функция, а не её вызов, и оно бы сработало. – OPTIMUS PRIME Aug 08 '19 at 09:10