テキストボックスの入力に基づいて値を更新する更新アクションがあります。検証にはJavaScriptを使用しました。スクリプトと検証は、最初のテキストボックス値に対してのみ正常に機能します。
マイビューコード
@foreach (var item in Model)
{ <tr>
<td align="right" class="Text_nocolor" valign="top">
@using (Html.BeginForm("Update", "Cart", new { UserID = Request.QueryString["UserID"] }, FormMethod.Post, new { id = "myForm" }))
{
@Html.Hidden("id", @Request.QueryString["UserID"] as string)
@Html.Hidden("productid", item.ProductID as string)
<input id="Quantity" type="text" class="Text_nocolor" name="Quantity" value="@item.Quantity" onblur="return allownumbers() " maxlength="3"/>
@Html.Hidden("unitrate", item.Rate)
<input type="submit" value="Edit" class="Text_nocolor" onclick="return RegainFocus();" />
}
</td >
<tr>
}
私が使用したスクリプト:
<script type="text/javascript">
function RegainFocus() {
if ((document.getElementById("Quantity").value).length == 0) {
document.getElementById("Quantity").focus();
alert("Quantity cannot be empty");
document.getElementById("Quantity").value = document.getElementById("Quantity").defaultValue;
return false;
}
else if ((document.getElementById("Quantity").value) > 100) {
alert("There is no enough inventory for this product to fulfill your order");
document.getElementById("Quantity").value = document.getElementById("Quantity").defaultValue;
return false;
}
}
function allownumbers() {
var val = parseInt(document.getElementById("Quantity").value);
if (!val || val < 1) {
alert('Please enter a valid value');
document.getElementById("Quantity").value = document.getElementById("Quantity").defaultValue;
return false;
}
document.getElementById("Quantity").value = val;
return true;
}
</script>
また、テキストボックスに別のIDを取得するかどうかも確認しました。ただし、すべてのテキストボックスのIDは同じであり、最初のテキストボックスを除く他のテキストボックスでは検証は機能しません。
助言がありますか。
編集 ::
function allownumbers() {
alert('fasfa');
var elements = document.getElementsByName('Quantity');
for (var i = 0; i < elements[i].length; i++) {
alert(elements);
if (!elements || elements < 1) {
alert('Please enter a valid value');
return false;
}
else if (elements > 100) {
alert('Please enter a value less than 100');
return false;
}
}
return true;
}
モデルには値があり、各テキストボックスには値が含まれています。ただし、要素は値としてNaNのみを返します。