2

我正在尝试在我的网站上的回复表单的 sumbit 上运行一个功能。这些表单是在页面加载后由 Javascript 创建的,因此 Jquery 使用实时函数来响应“.replyformsubmit”类按钮的单击。

我需要脚本来记录表单的输入值,但似乎无法这样做。

目前找到了包含按钮的表单的 ID,但使用它来尝试查找输入值似乎没有结果,这可能是一个男生错误,但我似乎无法理解。

任何帮助都会很棒。

jQuery:

$(".replyformsubmit").live("click", function(){

var curform = $(this).closest('form').attr('id');//what form is the current one?


var comment = $('#' + curform + ' >  input[name=comment]"').val(); //comes out as undefined
var replyingSerial = $('#' + curform + ' >  input[name=replyingSerial]"').val(); //comes out as undefined

...

该脚本似乎无法找到评论回复序列号是什么。

标准示例表单的 HTML 是:

<form action="com.php" method="post" id="replyform_quickreply_1345291318.6107" class="replyform">
<textarea name="comment" type="text" id="commenttextquickreply_1345291318.6107">
</textarea>
<br>
<input type="submit" value="send!" class="replyformsubmit">
<input type="hidden" style="visibilty: hidden;" name="replyingSerial" value="1345291318.6107"></form>
4

3 回答 3

2

那是因为按钮是 a submit,它阻止了其余的代码被执行。改为使用type='button'

或使用:

$('#formname').submit(function() {
  alert('Handler for .submit() called.');
  return false;
});
于 2012-08-18T12:24:39.233 回答
2

有几件事。注释是一个文本区域,而不是输入,所以如果你想找到它,你需要使用 textarea[name=comment]。

其次,您可以使用 parent() 和 find 使您的代码更简洁:

$(".replyformsubmit").on("click", function(){
   var parent = $(this).parent();
   var comment= parent.find("textarea[name=comment]");
    alert(comment.val());
});​
于 2012-08-18T12:28:07.527 回答
1

将 input type="submit" 更改为 input type="button" 因为它不允许其他代码在提交后执行,而不是 .live() 使用 .on()

从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。

此方法提供了一种将委托事件处理程序附加到页面的文档元素的方法,这在将内容动态添加到页面时简化了事件处理程序的使用。有关更多信息,请参阅 .on() 方法中对直接事件与委托事件的讨论。

于 2012-08-18T12:26:08.840 回答