jQuery .submit没有被调用?

时间:2011-04-12 21:04:59

标签: javascript jquery ruby-on-rails

我有以下函数用于在我提交的表单后调用(此方法位于我的rails应用程序的application.js文件夹中):

var addToTopics = function() {
    var result = "";
    var checkedTopics = $(".topic-checkbox:checked");
    $.each(checkedTopics, function(i, topic) {
        if(i == 0) {
            result = result + $(topic).attr('value');
        }
        else {
            result = result + ", " + $(topic).attr('value');
        }
    });
    return result;
};


$("#new_comment").submit(function() {
    var ListOfTopics = addToTopics();
    $('#comment_topics').val(ListOfTopics);
    alert($('#comment_topics').val());
    return true;

});

HTML

<form method="post" id="new_comment" class="new_comment" action="/comments" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="8vLhtuco+TAkeB+9kQ0gERvA54BD/BnjJuguWxuXWHQ=" name="authenticity_token"></div>


          <div class="field">
            <label for="comment_comment">Comment</label>
            <br>
            <textarea rows="20" name="comment[comment]" id="comment_comment" cols="40"></textarea>
          </div>
          <div class="field">
            <input type="hidden" value="28" name="comment[review_id]" id="comment_review_id">
          </div>
          <div class="field">
            <input type="hidden" value="1" name="comment[user_id]" id="comment_user_id">
          </div>
          <div class="field">
            <input type="hidden" value="" name="comment[topics]" id="comment_topics">
          </div>
          <div class="actions">
            <input type="submit" value="Create Comment" name="commit" id="comment_submit">
          </div>
</form>

但是,当我提交表格时,这个警告似乎没有被调用。

知道为什么吗?谢谢

4 个答案:

答案 0 :(得分:0)

在运行$(“#new_comment”)之前,已将一个id为new_comment的元素添加到dom中.remit(function(){...});

如果没有,则$(“#new_comment”)将不返回任何选择,jquery将默默地“失败”。

答案 1 :(得分:0)

我昨天遇到了同样的问题,我的问题是页面上一个无关的javascript错误 在此行上方添加一个简单的提醒

$("#new_comment").submit(function() {

检查(或检查浏览器js控制台)

答案 2 :(得分:0)

尝试更改$(“#new_comment”)。submit(function()to $(“#comment_form”)。submit(function(),从我在代码中看到的那两个选择器不匹配。希望它有帮助。干杯

由于你的表单中有一个action属性“action ='/ Comment'”,如果你没有正确的理由将其删除,或者阻止默认行为,这将迫使表单重定向到您当前的网址+ /评论

所以代码看起来像:

$("#comment_form").submit(function(evt) {
    evt.preventDefault();
    // rest of function below
}); 

答案 3 :(得分:0)

在将表单呈现到dom之后,您需要确保附加侦听器的代码运行。这是一种方法:

$(function() {
  $("#new_comment").submit(function() {
    var ListOfTopics = addToTopics();
    $('#comment_topics').val(ListOfTopics);
    alert($('#comment_topics').val());
    return true;
  });
});