jQuery:指定enter键提交ajax表单,我在这里做错了什么?

时间:2011-10-31 16:00:38

标签: jquery ajax

Le HTML:

<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,ruby on rails 2.3.8使用原型,因为它是默认的js lib

另外,正如我提出的问题:当表单加载o.o时,.focus()没有聚焦textarea,我需要做些什么特别的事情让textarea有焦点?

2 个答案:

答案 0 :(得分:4)

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

var form_id = '#new_comment_2_30';

答案 1 :(得分:0)

除了Rob W所说的,你将选择器连接起来:

form_id + "textarea#comment_reply_body"

你需要空间来拥有嵌套选择器:

form_id + " textarea#comment_reply_body"