2013-06-04 151 views
0

我研究了如何通过javascript提交表单,但在我的情况下,我基于数据集合创建了几个表单。我不知道引用表单ID的最佳方法。通过javascript提交表单

<c:forEach 
    var="meeting" 
    items="${response.mMeetingList}" 
    begin="0" 
    end="5"> 

    <div class="row"> 

     <ul class="span4 unstyled"> 
      <li> 
       <form name="mtgDetailsForm" action="/transporter/app/meeting/read" method="POST"> 
       <input type="hidden" name="meetingId" value="${meeting.meetingId} }"> 
       <a href="javascript: getMtgDetails()" class="row"> 
        <div class="span1"><fmt:formatDate value="${meeting.startTime}" type="time" pattern="h:mm a"></fmt:formatDate></div> 
        <div class="span3">${meeting.meetingName}</div> 
       </a> 
       </form> 
      </li> 
     </ul> 

    </div> 

</c:forEach> 

而这里的提交表单的JS方法:

function getMeetingDetails(data){ 
     document.mtgDetailsForm.submit(); 
    } 

显然,这是行不通的,因为格式ID将被复制。什么是更好的方法?

感谢您的任何提示!

+1

好复制无论如何,表单ID无效。是不是有一个理由,你不能有一个单一的形式与所有这些UL里面,只提交整个表格? – recneps

+0

为什么不使用'

+0

你会用正在使用的标记语言(jsp/asp/etc)标记吗? –

回答

1

我不知道你使用的生成动态表单的代码,但一个方法是产生一个每种形式的ID,如下所示:

<form name="mtgDetailsForm${counter}"> 

通过参数传递的形式ID的功能

<a href="javascript: getMtgDetails('mtgDetailsForm${counter}')" class="row"> 

获取表单并提交总部设在参数

function getMeetingDetails(formId){ 
     document.getElementById(formId).submit(); 
    } 

还需要增加柜台里面的for循环${counter++}

+0

工作就像一个魅力;谢谢你的帮助。 – fumeng

1

您可以参考formaexample on jsFiddle

function sub(e) 
{ 
    var f = e.parentNode; 

    // if using jQuery prefer this method to access `form` 
    // var f = $(e).closest("form"); 

    f.submit(); 
} 

然后

<a href="#" onclick="sub(this)">Submit</a> 
+0

这是脆弱的(如果事件起源不是直接的孩子,将会中断)。我更喜欢['.closest(“form”).submit()'](http://stackoverflow.com/a/419111/309483) –

+0

@JanusTroelsen我也是,但他并没有使用jQuery,我想,它会过于复杂的答案与纯Js – BrunoLM

+0

实施它我正在使用JQuery – fumeng