Javascript 将值传递到外部函数JQuery

Javascript 将值传递到外部函数JQuery,javascript,jquery,html,Javascript,Jquery,Html,我试图为我的所有文档创建外部通用函数。这个函数我想用“this”方法来处理函数的内部过程,“this”值来自不同的按钮。但是这个代码对我不起作用。如何解决这个问题 jQuery代码: function myFunction(e){ var inp = $(this).val(), target = e.target, position = target.selectionStart; inp = inp.replace(/a/g, "A"); inp = inp.rep

我试图为我的所有文档创建外部通用函数。这个函数我想用“this”方法来处理函数的内部过程,“this”值来自不同的按钮。但是这个代码对我不起作用。如何解决这个问题

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 );
}
<form name="inputform">
    <input class="Search" type="text" autofocus name="searchbox"  id="Search" style="width:800px; height:200px;">
</form>
使用jQuery将值发送到外部函数

$(document).ready(function(){
    $('#Search').keyup(myFunction('#Search'));
});
HTML代码:

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 );
}
<form name="inputform">
    <input class="Search" type="text" autofocus name="searchbox"  id="Search" style="width:800px; height:200px;">
</form>


如果我直接输入文本框id,它工作正常

您的功能是回调;jQuery将事件信息传递给您的回调

因此,当您这样做时:
$('Search').keyup(myFunction('Search'))

现在发生的是
(myFunction()('#Search'))(e)
,这不是您想要的。
e
是jQuery传递的
键向上
事件侦听器中的事件信息

如果您想传入“#Search”,您可以创建一个函数,该函数丢弃这个
e
,并传递您想要的内容,如下所示

$('#Search').keyup(function(e){
    myFunction('#Search');
});
但函数并不是在侦听字符串,而是在侦听事件信息,以便您可以执行以下操作

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

您不需要像
myFunction('#Search')
一样将
#Search
作为
myFunction
的参数传递。你可以像下面这样做

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

在将
'#Search'
绑定到keyup时,为什么要将其传递到
myFunction('#Search')
?您需要传入一些配置吗?不需要。这个外部函数是通用的。因此,我使用了更多的文本框。所以,若我改为另一个文本框,我希望将该文本框的ID传递给函数一侧的进程。这就是为什么我也使用“this”作为通用的.But$('Search').keyup(function(){myFunction('Search');});这也不起作用。它上面写着:
$(“#搜索”).keyup(myFuction)