0

入力ボックスに jquery を使用して、前に働いていた人のコンテンツを検証します comoon.js という名前のファイルを作成し、そのファイルは他のすべてのファイルをサポートします.しかし、このコードを (document).ready(このような関数()

    $(document).ready(function()
{
    $('#validate').keyup(function(){
      var i = $('input');
      (/http:\/\//).test(i.val()) && i.val(i.val().replace('http://',''));
    });

});

そして、私はこのような入力ボックスを持っています

<input type="text" id="validate"  class="right" name="linkurl" maxlength="150" size="130"/>

しかし、このボタンでは機能しません。何をすべきか、何が問題なのか、すべてのページのjsファイルがロードされていることがわかっています...

4

1 に答える 1

2

ページに複数の入力があると仮定すると、問題は次の行です。

var i = $('input');

...これは、ページ上のすべての入力iを含む jQuery オブジェクトに設定されます。代わりに試してください:

var i = $(this);

...これはi、イベントが発生した要素だけを含む jQuery オブジェクトに設定されます。

(あなたのコードは、入力が 1 つしかない場合に機能します。)

問題の入力がページの読み込み後に動的に作成される場合、2 つ目の問題が発生します。まだ存在しない要素にイベント ハンドラーをバインドすることはできませんが、委任されたイベント ハンドラーを使用することはできます。

$(document).ready(function()
{
    $(document).on("keyup", '#validate', function(){
      var i = $(this);
      (/http:\/\//).test(i.val()) && i.val(i.val().replace('http://',''));
    });
});

理想的には、ページの読み込み時に存在する「#validate」の最も近い先祖にdocument置き換えます。$(document).on("keyup", '#validate', ...バージョン 1.7 未満の jQuery を使用している場合は、.delegate()代わりに を使用します.on()(詳細については、jQuery API doco を参照してください)。

于 2012-07-04T05:52:02.097 に答える