我在验证for循环中的每个PhoneNumber文本框时遇到麻烦。 我的验证功能可与单个Texbox很好地配合,但是当我尝试应用到循环时,我不知道javascript如何理解循环的索引。
需要帮助!
@for (int i = 0; i < Model.Count; i++)
{
<tr>
<td>
<div>
<b>Phone Number:</b>
@Html.EditorFor(model => model[i].Hotline, new { htmlAttributes = new { @class = "form-control ShortInput", id = "hotline[i]//html doesn't understand the index here" maxlength = "15" } })
<span class="ErrorBlock field-validation-valid"></span>
</div>
</td>
</tr>
这是验证功能:
function validateForm() {
var result = true;
result = checkPhone('#hotLine//"how could I get the index here"', 'Invalid phone number.') && result;
return result;
}
答案 0 :(得分:-1)
它不会重新识别html中的索引,因为它会将其作为字符串。您可以做的是,在循环内使用var,然后将该var分配给您的id。 像这样:
@for (int i = 0; i < Model.Count; i++)
{
var dynamicId = "hotline["+@i+"]";
<tr>
<td>
<div>
<b>Phone Number:</b>
@Html.EditorFor(model => model[i].Hotline, new { htmlAttributes = new { @class = "form-control ShortInput", id = dynamicId maxlength = "15" } })
<span class="ErrorBlock field-validation-valid"></span>
</div>
</td>
</tr>
可能存在一些语法错误,但这应该可以解决。
在jquery中,您可以执行以下操作;
function validateForm() {
var result = true;
$('.ShortInput').each(function() {
var id = $(this).id;
// TODO: whatever operation you want to perform
});
}