我有以下函数用于在我提交的表单后调用(此方法位于我的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>
但是,当我提交表格时,这个警告似乎没有被调用。
知道为什么吗?谢谢
答案 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;
});
});