2011-10-31 65 views
0

乐HTML:jQuery:分配输入键提交ajax表单,我在这里做错了什么?

<form action="/comment_replies/ajax_create/30?type=2" 
     id="new_comment_2_30" method="post" 
     onsubmit="new Ajax.Request('/comment_replies/ajax_create/30?type=2', 
           {asynchronous:true, evalScripts:true, 
           parameters:Form.serialize(this)}); 
       return false;"> 

     <textarea class="tb_input_text_area" cols="40" 
         id="comment_reply_body" name="comment_reply[body]"></textarea> 

     <input class="action_button" id="comment_reply_submit" 
        name="commit" type="submit" value="Comment"> 
    </form> 

而且我的javascript

<script type="text/javascript"> 
$j(function(){ 
    form_id = 'new_comment_2_30'; 

    $j(form_id + "textarea#comment_reply_body").focus(); 

    $j("#comment_reply_body").keypress(function(e){ 
     if(e.which == 13){ 
      e.preventDefault(); 

      $j(form_id).submit(); 
     } 
    }); 
}); 

</script> 

那么,.submit()不是你如何提交Ajax表单?我知道它适用于非Ajax表单。
我们的目标是使这个从有点像Facebook的评论框(只需键入,然后按Enter准备时提交)

注:$ J = jQuery.noConflict,在轨道上2.3.8红宝石使用原型它是默认的js库

另外,正如我侧方的问题:.focus()不会集中在表单加载oo时textarea,有什么特殊的我需要做一个textarea有焦点?

+0

作为注意:你可以使用jQuery的[ajaxform插件](http://jquery.malsup.com/form/),你应该只提交Shift没有按下。 – Mikhail

回答

4

在jQuery中,ID选择器必须以尖锐的前缀(#)作为前缀。你的声明更改为:

var form_id = '#new_comment_2_30'; 
+0

好吧,那很尴尬。 – NullVoxPopuli

0

除了什么罗布W¯¯说,你串连你的选择是:

form_id + "textarea#comment_reply_body" 

你需要的空间有嵌套的选择:

form_id + " textarea#comment_reply_body" 
相关问题