【问题标题】:Make text boxes in a row required if any other text box of a row is filled?如果填充了一行的任何其他文本框,是否需要在一行中设置文本框?
【发布时间】:2018-08-31 18:22:11
【问题描述】:

我将我的FormCollection 发布到我的HttpPost 行动Asp.Net MVC。一切正常,但问题是验证。我有 3 行,每行有 3 个文本框。我想通过JavaScriptC# 确保如果一行中的任何textbox 已填充,则需要其他的。我不能让它静态,因为行和文本框是非常动态的。我们可以有五行、六行或更多行。 以下是我的代码:

@{
     int count = 0;
     foreach (var record in Model)
     {
       <tr>
         <td> 
            @Html.Hidden(count.ToString() + "Record", record.Id.ToString())
         </td>
         <td>
                <input type="text" name="@count.ToString()Code" />         
         </td>
         <td>
                <input type="text" name="@count.ToString()Name" />     
         </td>           
       </tr>
       count = count + 1;
     }
     @Html.Hidden("TotalRecords", count)
}

假设,我有三行,每行都有代码和名称。如果row1 的代码被填写,我需要确保'row1' 的名称应该填写。我该怎么做?

【问题讨论】:

  • 创建一个具有CodeName 属性的视图模型。应用条件验证属性。例如foolproof [RequiredIfNotEmpty("Code") 到您的 Name 属性。然后通过将模型的集合传递给视图并使用HtmlHelper 方法(包括@Html.ValidationMessageFor())来正确生成视图,以便您获得客户端和服务器端验证,并且可以在 POST 方法中绑定到您的模型

标签: c# asp.net-mvc validation conditional


【解决方案1】:

您可以通过向所有文本框添加类来处理它。验证如果具有该类的文本框没有值,则显示如下代码所示的消息

$("#submit").click(function(){
var Flag=0;
debugger
$('.textBox').each(function(i) {
   if($(this).val()=="")
   {
   if(Flag==0)
   {
   Flag=1+i;
}
}

});

if(Flag!=0)
{
alert("Please fill textbox : "+Flag)
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" class="textBox" > <br />
<input type="text" class="textBox" > <br />
<input type="text" class="textBox" > <br />
<input type="button" id="submit" value="submit" >

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2015-01-16
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多