2012-06-24 3 views
0

У меня есть поля комментариев под сообщениями на моем сайте, и я бы хотел, чтобы люди могли отправить комментарий, просто нажав клавишу возврата. Комментарий также добавляется через ajax.JQuery submit textarea on return key press using AJAX post

Мой код в его нынешнем виде является:

На пост AJAX и захватив клавишу ввода:

$('textarea#scat').bind('keypress', function(e) { 
    if(e.keyCode==13){ 

     var myClass = $(this).attr("class"); 
     var comment = $("textarea." + myClass).val(); 
     if (comment == "") { 
     return false; 
     } 

     if (!$.trim($("textarea." + myClass).val())) { 
     return false; 
     } 

     var cid = $("input.c_" + myClass).val(); 
     var itemid = $("input.i_" + myClass).val(); 
     var type = $("input.t_" + myClass).val(); 
     var top = $("input.l_" + myClass).val(); 

     var dataString = 'comment='+ comment + '&cid=' + cid + '&itemid=' + itemid + '&type=' + type; 
     //alert (dataString);return false; 
     $.ajax({ 
      type: "POST", 
      url: "addcomment.php", 
      data: dataString, 
      success: function() { 
       $('#c').load('ajax/querylc.php?oid=' + myClass); 
       $("textarea." + myClass).val(''); 
      } 
     }); 
     return false; 
    }; 
}); 

И мой комментарий коробка Код:

<div id='statuscomadd' class="<?php echo $sid; ?>" style='text-align:center; padding-top:2px; margin-left:12.5px; border-left:1px #a3a3a3 solid; border-right:1px #a3a3a3 solid; border-bottom:1px #a3a3a3 solid; height:40px; width:420px; vertical-align:middle;'> 
    <img id="scati<?php echo $sid; ?>" src='<?php if ($dp == null) { echo 'img/unknown_user.jpg'; } else { echo 'pf/' . $uid . '/' . $dp; } ?>' style='height:36.5px; margin-right:5px; margin-bottom:6px;'> 
    <form action='addcomment.php' method='post' id='ac' style='display:inline; border:0px; margin: 0 0 0 0; padding: 0 0 0 0;'> 
     <textarea id='scat' style='outline: none; height:30px; width:315px; font-family:Arial; border:0px; resize:none; margin-bottom:5px; border:1px solid #C9C9C9; display:inline;' name='comment' class='<?php echo $sid; ?>'></textarea> 
     <input type='hidden' class="t_<?php echo $sid; ?>" name='type' value='status' /> 
     <input type='hidden' class="i_<?php echo $sid; ?>" name='itemid' value='<?php echo $sid; ?>'/> 
     <input type='hidden' class="c_<?php echo $sid; ?>" name='cid' value='<?php echo $uid ?>' /> 

    </form> 
</div> 

post, если я использую кнопку отправки формы, но не, если я использую ключ возврата, все, что происходит в настоящее время, это то, что он добавляет новую строку, которую я хочу только в shift + enter.

Любая помощь была бы высоко оценена!

+0

первое, что данные в AJAX могут взять объект тоже. Я предпочитаю использовать это, поскольку он работает лучше, чем пытаться сформировать строку самостоятельно. И это повторяет $ sid? Если вы выведете инструкции if для возврата false, что произойдет? Также вы получаете предупреждение(), которое вы забыли? Ваша консоль браузера ничего не говорит? – Sammaye

+0

AJAX отлично работает, если я использую кнопку отправки. Это просто, что он не запускается нажатием клавиши ... – AviateX14

+0

Что делать, если вы напрямую обращаетесь к какой-то протерли: 'if (event.which == 13) {' – Sammaye

ответ

0

Вместо «нажатия клавиш» используйте следующее.

$('textarea#scat').bind('**keydown**', function(e) { 

if(e.keyCode==13){ 
+0

Нет разницы ... – AviateX14

0

Сформировать Docs при нажатии клавиш http://api.jquery.com/keypress/:

Обратите внимание, что KeyDown и KeyUp обеспечивают код, указывающий, какая клавиша нажата , в то время как нажатие клавиши указывает, какой символ был введен. Например, для в нижнем регистре «a» сообщается как 65 путем нажатия клавиш и нажатия клавиш, , но как 97 нажатием клавиши. В верхнем регистре «А» сообщается как 65 по всем событиям. Из-за этого различия, при выборе особых нажатий клавиш , таких как клавиши со стрелками, .keydown() или .keyup() - лучший выбор.

Так что вы на самом деле хотите использовать KeyDown с функцией вместо: http://api.jquery.com/keydown/

0

, возможно, придется делать с атрибутом класса вашего текстового поля.

Является ли переменная PHP $ sid числом?

Если это так, попробуйте добавить нечисловой префикс как

class='classname_<?php echo $sid; ?>'