两个文本html文本在页面上的两个不同位置输入,具有相同的提交ID

时间:2016-07-18 13:25:54

标签: javascript jquery html forms razor

所以我有一个名为Index.cshtml的页面

我的输入格式为id“cvr”:

   @using (Html.BeginForm("SendMailAsACompany", "Contract", null, FormMethod.Post, new { id = "cvr" }))
   {
    <input type="hidden" value=@Html.ViewData.Model.StudentId name="studentId" />
    <input type="hidden" value=@Html.ViewData.Model.CompanyId name="companyId" />
    <input type="hidden" value=@Html.ViewData.Model.ApplicationId name="applicationId"/>


       if (User.Identity.GetUserId() == Html.ViewData.Model.CompanyId)
       {

           <input type="text" name="companyCVR" placeholder="Indsæt CVR-nr."/>
       }

   }

并在页面底部我有上面的id(“cvr”)提交按钮,我试图再添加两个表单传递给控制器​​(repFirstName和repLastName):

 @if (User.Identity.GetUserId() == Html.ViewData.Model.CompanyId)
         {
            using (Html.BeginForm("SendMailAsACompany", "Contract", null, FormMethod.Post, new { id = "cvr" }))
            {

                    <input type="text" name="repFirstName" placeholder="Indsæt fornavn" />
                    <input type="text" name="repLastName" placeholder="Indsæt lastnavn" />

            }
                    <input type="button" value="Submit" onclick="$('#cvr').submit();" class="btn btn-success" />
          }

但是他们不会传递提交,只会传递第一个值(上面的CPR)。但是,如果我在开始时拥有所有三个值,它们将成功通过。

如何在两个地方都有输入,仍然可以提交数据并将数据传递给控制器​​?我需要两个单独的表格/ ID吗?

2 个答案:

答案 0 :(得分:2)

只需要一个表单,删除第二个表单声明,并使用在页面底部定义的form attribute将表单与表单相关联。

  

form属性用于将input,select或textarea元素与表单(称为表单所有者)相关联。

@if (User.Identity.GetUserId() == Html.ViewData.Model.CompanyId)
{
    <input type="text" name="repFirstName" placeholder="Indsæt fornavn" form="cvr"/>
    <input type="text" name="repLastName" placeholder="Indsæt lastnavn" form="cvr"/>
    <button form="cvr" class="btn btn-success">Submit</button>
}

答案 1 :(得分:0)

如果您生成的HTML会产生多个具有相同ID的元素,那么您会有一些像这样的内联JavaScript:

<input type="button" value="Submit" onclick="$('#cvr').submit();" />

然后上面的javascript只适用于第一个#cvr

这就是为什么你不能/不能在页面上有多个具有相同ID的元素的一个例子。

您必须重构代码,才能使用任何给定ID的元素。 如果需要具有相同名字对象的多个元素,请使用class - 这样您的javascript就会变为:

<input type="button" value="Submit" onclick="$('.cvr').submit();" />

,您生成的HTML将为class="cvr",而不是id="cvr"

或者,您可以确保每个表单使用不同的ID,例如id="cvr1"id="cvr2"id="cvr3",然后您的javascript可以是:

<input type="button" value="Submit" onclick="$('#cvr1, #cvr2, #cvr3').submit();" />