使用onsubmit时获取表单的ID

时间:2015-06-06 12:21:50

标签: javascript jquery

使用Javascript:

function submitComment(e){
  e.preventDefault();
  var comment = $('#????').val(); // how do I get the ID?
  // ajax
}

评论表:

<form id="comment-form[id]" onsubmit="submitComment(event)">
    <input id="comment-input[id]" type="text" placeholder="Comment...">
</form>

[id]是特定表单的变量ID。它有ID的原因是因为我有一个for循环,显示了一个完整的帖子列表,每个帖子都有自己的评论表单(想想Facebook)。

我想知道的是,当他们根据提交的表单的ID提交评论输入框时,我如何获得评论输入框的值(文本)。

4 个答案:

答案 0 :(得分:1)

使用您的设置(HTML / javascript),您可以使用纯粹的javascript(如

)执行此操作
function submitComment(e) {
   var id = e.target.id;
   id = id.match(/\[(.*?)\]/)[1];
   console.log(id);
   var comment  = document.getElementById('comment-input['+id+']').value;
   console.log(comment);
}

function submitComment(e){
  var id = e.target.id;
  id = id.match(/\[(.*?)\]/)[1];
  console.log(id);
  var comment  = document.getElementById('comment-input['+id+']').value;
  console.log(comment);
}
<form id="comment-form[0]" onsubmit="submitComment(event)">
    <input id="comment-input[0]" type="text" placeholder="Comment...">
  <input  type="submit" placeholder="submit">
</form>

答案 1 :(得分:1)

您可以使用event.target

var comment = $('input[id^="comment-input"]',e.target).val()

这将为您提供输入值。

  • e.target将为您提供当前表单。
  • 然后你可以使用[^=""] - 属性以选择器开头来查找输入元素。
  

如何根据提交的表单ID获取评论输入框的值(文本)

var formID = e.target.id;   //get form ID
var comment = $('#'+formID+' input[id^="comment-input"]').val()
//use $('#parent child') selector.

答案 2 :(得分:0)

function submitComment(e){
       e.preventDefault();
       // e.currentTarget gives you the form element and then you can extract its id
       var formElementId = $(e.currentTarget).attr("id");
       // Then replace the form text with input which will be your comment input id
       var commentElementId = formElementId.replace("form", "input");
       var comment = $(commentElementId).val(); // how do I get the ID?
       // ajax
 }

答案 3 :(得分:0)

function submitComment(e){
  e.preventDefault();
  var comment = $('input[id^="comment-input"]').val();
  // ajax
}

使用jquery start-with选择器可能会有所帮助。