2013-12-21 4 views
-2

я присоединять <textarea> с JQuery и получить как парование:Jquery получает пустое значение после того, как присоединяя текстовое поле

<textarea class="comment_textarea" placeholder="Comment on this post.." title="Comment on this post.." name="comment_here"></textarea> 

, когда я пытаюсь запустить функцию:

function makeComment(){ 
    var comment = $(this).val(); 
    console.log(comment); 
} 
$("#newsfeed_posts").bind('keyup', '.comment_textarea', makeComment); 

я получить пустое значение на моя консоль, я также пытаюсь получить доступ к различным атрибутам из текстового поля, но я ничего не делаю. Может ли кто-нибудь помочь мне получить значение, когда я нажимаю на клавиши, и, если возможно, когда я специально нажимаю кнопку ввода? благодарим вас заранее.

+0

2-й аргумент для привязки, как ожидается, быть объективистские t, который будет передан обработчику, а не селектору. Слушатель будет установлен для '# newsfeed_posts' не для' .comment_textarea'. Использовать по предложению Фрэнка Конри –

+0

Можете ли вы показать, как вы добавляете текстовое поле, потому что вы прокомментировали, что делегирование событий не требуется, и если вы добавляете после начальной загрузки страницы, это, вероятно, необходимо. – Popnoodles

+0

Какую версию jQuery вы используете? '.bind()' old, '.on()' current. – Popnoodles

ответ

2

Если вы пытаетесь использовать делегирование событий вы можете попробовать:

$("body").on('keyup', '.comment_textarea', makeComment); 

Связывание может произойти до того, как область текста была частью йот, и это должно получить вокруг него.

+0

on не является функцией, я считаю, что она была удалена из jquery, поэтому я не могу ее использовать – user2444411

+0

@ user2444411 вы можете и иногда должны. Не nessesery здесь tho –

+0

@ user2444411 .on наиболее определенно является функцией jQuery – Popnoodles

0

Попробуйте это:

function makeComment(ele){ 
    return $(ele).val(); 
} 

$("#newsfeed_posts").keyup(function(){ 
    var comment = makeComment('.comment_textarea'); 
    console.log(comment); 
}); 
0

Вы использовали Bind() с неправильным синтаксисом.

$(selector).bind(eventType [, eventData ], handler(eventObject)) 

Других, если вы хотите использовать делегирование, пожалуйста, используйте живой (старую версию Jquery), на (новую версию) или делегат() Примера

$("#foo").bind("click", { 
    msg: "Click message" 
}, function(event) { 
    alert(event.data.msg); 
}); 

В вашем случае, я думаю, вы можете использовать

$(".comment_textarea").live('keyup', makeComment); 
    $("#newsfeed_posts").on('keyup', '.comment_textarea', makeComment); 
or $("#newsfeed_posts").delegate('.comment_textarea','keyup', makeComment); 

Надежда это поможет вам

Смежные вопросы