Jquery无法找到给定表单id的表单输入

Jquery unable to find form inputs to given form id

本文关键字:表单 id 输入 Jquery      更新时间:2023-09-26

我正试图在我的网站上的回复表单的sumbit上运行一个函数。这些表单是在页面加载后由Javascript创建的,因此Jquery使用live函数来响应按钮的".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
...

脚本似乎找不到注释replyingSerial是什么。

标准示例表单的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>

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

其次,您可以使用parent()和find使代码更干净:

$(".replyformsubmit").on("click", function(){
   var parent = $(this).parent();
   var comment= parent.find("textarea[name=comment]");
    alert(comment.val());
});​

这是因为按钮是submit,它阻止执行其余代码。请改用type='button'

或者使用:

$('#formname').submit(function() {
  alert('Handler for .submit() called.');
  return false;
});

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

从jQuery 1.7开始,.live()方法已被弃用。使用.on()附加事件处理程序。旧版本jQuery的用户应该优先使用.delete()而不是.live().

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