Передача значений во внешнюю функцию jQuery

#javascript #jquery #html

#javascript #jquery ( jquery ) #HTML #jquery

Вопрос:

Я попытался создать внешнюю общую функцию для всего моего документа. Эту функцию я хочу использовать «этот» метод для работы внутри процесса функции, и чтобы «это» значение исходило из разных кнопок. Но этот код не работает для меня. как решить эту проблему.

Код jQuery:

 function myFunction(e){ 
    var inp = $(this).val(), target = e.target, position = target.selectionStart;
    inp = inp.replace(/a/g, "A");
    inp = inp.replace(/i/g, "I");
    inp = inp.replace(/u/g, "U");
    inp = inp.replace(/e/g, "E");
    $(this).val(inp);
    $(this).get(0).setSelectionRange(position, position );
}
  

Отправьте значение во внешнюю функцию с помощью jQuery

 $(document).ready(function(){
    $('#Search').keyup(myFunction('#Search'));
});
  

HTML — код:

 <form name="inputform">
    <input class="Search" type="text" autofocus name="searchbox"  id="Search" style="width:800px; height:200px;">
</form>
  

Если я введу непосредственно идентификатор текстового поля, он будет работать нормально.

Комментарии:

1. почему вы переходите '#Search' к myFunction('#Search') привязке к keyup? вам нужно передать какую-то конфигурацию?

2. Нет. эта внешняя функция является общей. для этого я использую еще несколько текстовых полей. итак, если я перейду на другое текстовое поле, я хочу передать идентификатор этого текстового поля для обработки на стороне функции. Вот почему я также использовал «это» в качестве общего.

Ответ №1:

Ваша функция является обратным вызовом; jQuery передает информацию о событии вашему обратному вызову.

поэтому, когда вы делаете: $('#Search').keyup(myFunction('#Search'));

Происходит (myFunction()('#Search'))(e) то, чего вы не хотите. Это информация о e событии от прослушивателя key up событий, которую передает jQuery.

Если вы хотите передать ‘#Search’, вы можете создать функцию, которая отбрасывает это e и передает то, что вы хотите, внутрь, вот так.

 $('#Search').keyup(function(e){
    myFunction('#Search');
});
  

Но ваша функция не прослушивает строку, она прослушивает информацию о событии, поэтому вы можете сделать

 $('#Search').keyup(myFuction)
  

Комментарии:

1. Но $(‘#Search’).keyup(function(){myFunction(‘#Search’); }); это также не работает.

2. Там прямо написано: $('#Search').keyup(myFuction)

Ответ №2:

Вам не нужно передавать #Search в качестве аргумента myFunction like myFunction('#Search') . Вы можете сделать это просто следующим образом.

 $('#Search').keyup(myFunction);