2010-06-14 15 views
10

मैं कई टेक्स्टबॉक्सों को गतिशील रूप से एक सत्यापन नियम जोड़ने की कोशिश कर रहा हूं। यहाँ js है:jQuery - कई टेक्स्टबॉक्सों में गतिशील रूप से सत्यापन नियम जोड़ना

  //validate form. 
      $("#SubmitForm").validate(); 
      $("input[id*=Hours]").rules("add", { 
       number: true, 
       messages: { 
        number: "Please enter a valid Hours" 
       } 
      }); 

यह "घंटे" आईडी के साथ पृष्ठ पर पहले ही पाठ बॉक्स के लिए नियम लागू होता है, लेकिन फिर यह अन्य लोगों में से किसी को यह लागू नहीं होता।

कोई भी जानता है कि यहां क्या गलत है?

<% 
      int index = 0; 
      foreach (var log in Model.InvoiceLogs) { 
      %> 
       <tr> 
        <td class="topalign"> 
         <%: log.LogDate.ToShortDateString() %> 
         <%: Html.Hidden("InvoiceLogs[" + index + "].InvoiceID", log.InvoiceID) %> 
         <%: Html.Hidden("InvoiceLogs[" + index + "].InvoiceLogID", log.InvoiceLogID) %> 
        </td> 
        <td class="editor-field-medium"><%: Html.TextArea("InvoiceLogs[" + index + "].Description", Convert.ToString(ViewData["Description_" + log.InvoiceLogID]))%></td> 
        <td class="editor-field-small topalign"> 
         <%: Html.TextBox("InvoiceLogs[" + index + "].Hours", ViewData["Hours_" + log.InvoiceLogID])%> 
         <script type="text/javascript"> 
          $(document).ready(function() { 
           $("#InvoiceLogs_<%: index %>__Hours").rules("add", { 
            number: true, 
            messages: { 
             number: "Invalid Hours" 
            } 
           }); 
          }); 
         </script> 
        </td> 
       </tr> 
      <% 
       index++; 
      } 
      %> 
     </table> 

बहरहाल, यह एक अच्छा समाधान की तरह प्रतीत नहीं होता:

धन्यवाद, जस्टिन

उत्तर

10

आप .each() साथ वाइल्डकार्ड चयनकर्ता के अनुरूप प्रत्येक आइटम के लिए नियम जोड़ सकते हैं, इस तरह:

$("#SubmitForm").validate(); 
$("input[id*=Hours]").each(function() { 
    $(this).rules("add", { 
     number: true, 
     messages: { 
      number: "Please enter a valid Hours" 
     } 
    }); 
}); 

आशा इस मदद करता है!

+0

धन्यवाद, .each (function() {मैं जो खोज रहा था वह था। – Justin

+0

मैंने अपना जवाब अपडेट कर दिया है क्योंकि आपकी टिप्पणी ने मुझे एहसास दिलाया है कि आपको पेड़ ट्रैवर्सल विधि की भी आवश्यकता नहीं है क्योंकि वाइल्डकार्ड चयनकर्ता मिलान करेगा वैसे भी सभी निर्दिष्ट फ़ील्ड। Duh! :) –

+0

ठीक काम करता है। धन्यवाद। – spr

0

मैं इसे ऐसा करने काम कर पाने में सक्षम था। गतिशील रूप से इनपुट नियंत्रण की सूची में सत्यापन नियम जोड़ने का उचित तरीका क्या है?

संबंधित मुद्दे