0

私の質問に重複としてフラグを立てる前に、

私の問題に関連する既存の問題によって提供される解決策を試しましたが、残念ながらどれも機能しませんでした。だからここに私の問題があります。次のようなフラグメントがあります: AJAXを介してクエリを実行し、次のような新しい html を返す

<input type='text' class='input-mini' name='library_fee' readonly/>

ボタンがあります: 。次に、データベースからの値を含む value プロパティを持つ新しい HTML を返します。かつて空だったテキストボックスがいっぱいになります。

echo "<input type='text' class='input-mini' name='library_fee' value='". $fee['library_fee'] ."' readonly/>"

注: My Query と My AJAX は完全に正常に動作し、問題はありません


問題

テキストボックスをクリックするたびに読み取り専用プロパティを削除する機能を持つスクリプトがあります。

$(document).ready(function()
{
    $('input:text').on('click', function()
    {
        if($(this).is('[readonly]'))
        {
            $(this).removeProp('readonly');
        }
    });
});

ページがAJAX経由でリロードされるまで、これは正常に機能します。なぜ?

4

3 に答える 3

1

は動的に追加されるため、次のようにイベント デリゲーションを使用してイベント ハンドラーを登録するinput必要があります。

// New way (jQuery 1.7+) - .on(events, selector, handler)
$(document).on('click', ':text', function(event) {
    ....
});
于 2013-07-24T10:06:18.133 に答える
1

私がこれを正しく理解していれば、入力フィールドを AJAX 経由でサーバーからロードされた別のフィールドに置き換えています。

jQuery イベント バインディングは、$(document).ready() が起動されたときに 1 回だけ発生することを理解してください。このイベントが再度発生しない限り、入力を置き換えると、イベントは新しい入力にバインドされません。

AJAX 応答からロードされたときに手動でバインドすることが、おそらくここでの方法です。

于 2013-07-24T10:06:32.207 に答える