2

みなさん、こんにちは、私はショッピング カートに似たプロジェクトに取り組んでいます。以下のコードを使用して、ビューでテキスト ボックス (数量を選択するため) を生成しています。

    @foreach (var item in Model)
     {
      <tr>
      <td align="left" class="Text_nocolor">
       @Html.DisplayFor(modelItem=>item.ProductName)                                
       /td>
       <td align="right" class="Text_nocolor" valign="top">
      @using (Html.BeginForm("Update", "Cart", new { UserID = Request.QueryString["UserID"] }, FormMethod.Post, new { id = "myForm" }))
       {               
    <input id="Quantity" type="text" class="Text_nocolor" name="Quantity" value="@item.Quantity"  @*onblur="return NumberOnlyTextBox(event)"*@  onchange="return allownumbers()" maxlength="3"/>  
@Html.Hidden("unitrate", item.Rate)               
                                                    <input type="submit" value="Edit" class="Text_nocolor" onkeypress="return validateNumbersOnly(e);" onclick="return RegainFocus();" />
       }

上記のコードで、「id=Quantity」はテキストボックスを表します。そして、これらのテキストボックスの数値のみの検証用にJavaScriptを作成しました。これらは私のJavaScript関数です:

 <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;
            }
        }
    </script>
    <script type="text/javascript">
        function allownumbers() {
            //      var elements = document.getElementsByName('Quantity');
//           for()
            var val = parseInt(document.getElementsByName("Quantity").item(1).value);
            alert(val);
            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>

私の問題は、検証が最初のテキストボックスでのみ機能し、他のテキストボックスでは機能しないことです。誰でも解決策を提供できますか? ありがとうございました

4

1 に答える 1