2016-10-01 14 views
-1

私のすべてのドキュメントに対して外部汎用関数を作成しようとしました。その関数は、関数の内部で作業するために "this"メソッドを使い、 "this"値は差分ボタンから来ています。しかし、このコードは私のために働いていません。それを解決する方法。外部関数への値の受け渡し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> 

私が直接テキストボックスのIDを置く場合それは仕事です大丈夫です。

+1

keyupにバインドするときに '#Search''を' myFunction( 'Search') 'に渡すのはなぜですか?いくつかの設定を渡す必要がありますか? – synthet1c

+0

いいえ。この外部機能は一般的です。そのためにもう少しテキストボックスを使用しています。だから私が他のテキストボックスに変更する場合、そのテキストボックスのIDを関数の側で処理するように渡したいと思う。それで私はなぜ「これ」を一般にも使ったのです。 – user43153

答えて

0

を行うことができますので、あなたがmyFunction('#Search')ようmyFunctionの引数として#Search渡す必要はありません。単に次のようにすることができます。

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

あなたの機能はコールバックです。 jQueryはイベント情報をコールバックに渡します。

ので、あなたが行うとき:何が起こっている$('#Search').keyup(myFunction('#Search'));

は、あなたが望むものではありませんどの(myFunction()('#Search'))(e)です。 eは、jQueryが渡すイベントリスナーのkey upからのイベント情報です。

'#Search'を渡したい場合は、eを捨てて、このような内部を渡す関数を作成できます。

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

しかし、あなたの関数は、文字列のために待機していないされ、イベント情報についてそのリスニングあなたは

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

しかし$( '#Search')。keyup(function(){myFunction( '#Search');});これも機能しません。 – user43153

+0

それは右のところにある: '$( '#Search')。キーアップ(myFuction)' –

+0

あなたは間違ったことを渡していた –

関連する問題