-1

私の問題に対する解決策をたくさん読んだ後、答えが見つからなかったので、私は答えを見つけました。

ボタンが次のようにクリックされたときに、html コードを追加しています。

$(".button").on('click',function(){
    var p = $(this).parent(); 
    var data =  //  HTML CODE
    '<tr>'+
    '<td>&nbsp;</td>'+
    '<td><br /><textarea name="taDescripcion" class="txtArea mark">Write here</textarea></td>'+
    '<td>&nbsp;</td>'+
  '</tr>'+
  '<tr>'+
    '<td>&nbsp;</td>'+
    '<td><br /><input disabled="disabled" class="button" type="button" value="Send" /> |' +
    '<span class="linkUnderL">Cancel</span></td>' +
   ' <td>&nbsp;</td>'+
  '</tr>';
    $(p).append(data);
});

テキストエリア入力にはクラス(txtArea)があり、このクラスにはすでにイベントが添付されており、次の$(document).readyように作成されています。

$(".txtArea").on('keyup','.txtArea',function(){
        if($(this).val() == ""){
            $(".button").attr('disabled',true); 
        }
        else $(".button").attr('disabled',false);   
    });

なんらかの理由で、テキスト エリア イベントが機能しません。クラスは正しく追加され、スタイルは正常に機能します。.delegate()イベントを使用してその中に入れようとしましたが、うまくいきませ$(function(){ ..code.. });んでした

私は何を間違っていますか?...どんな助けでも大歓迎です。前もって感謝します

4

7 に答える 7

1

onテキスト領域クラスではなくドキュメントに設定します。

$(document).on('keyup','.txtArea',function(){...});

すでに DOM にあるものにイベントを設定する必要があります。

于 2013-07-09T15:47:33.573 に答える
1

これがあなたの問題かどうかは.onわかりませんが、ページロード時に利用できる要素に関数をバインドする必要があります。

つまり、バインディング要素がページの読み込みからそこにあることを確認する必要があります。

$("avaliableFromTheStart").on('keyup','.txtArea',function(){

これが役立つと思います。

編集

その理由$(document).on('keyup','.txtArea',function(){...は悪い考えであり、 now decrepitude を使用するのとまったく同じです.live.onon を配置documentすると、この要素がクリックされたときに、トップ レベルが見つかるまですべてをバブルアップする必要があるということですdocument。あなたがそれを避けることができれば、非常に悪い考えです。

これが意味を持つのは、ajax アプリケーションを構築している場合だけです。

于 2013-07-09T15:48:04.153 に答える