2012-11-01 3 views
2

Привет всем Я работаю над проектом, похожий на торговых cart.I я использую следующий код для создания текстовых полей (для выбора количества), на мой взгляд:прохождения яваскрипта проверки динамических текстовых полей в mvc3

@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> 

Моя проблема заключается в том, что проверка работает только для первого текстового поля не другие. Может ли кто-нибудь предложить решение? Спасибо

ответ

0

Попробуйте, используя следующий фрагмент кода:

onkeypress="return validateNumbersOnly(this);" onclick="return RegainFocus(this);" 
... 
function RegainFocus(obj) 
{ 
    if ((document.getElementById(obj).value).length == 0) { 
    .. 
} 
.. 

Надеется, что это помогает.

Смежные вопросы