#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);