2012-09-10 5 views
5

में सी # सर्वर साइड सत्यापन को प्रतिलिपि बनाएँ I मूल रूप से मेरे पृष्ठ पर निम्न सत्यापन है - इसका एक शब्द नियम है कि टेक्स्ट बॉक्स में एक विवरण 'और' शब्द को छोड़कर 3 शब्दों से अधिक नहीं हो सकता है। मैं सी # में निम्नलिखित सर्वर साइड सत्यापन जो ठीकजावास्क्रिप्ट

if (Desc.Trim().ToString() != "") 
{ 
    MatchCollection collection = Regex.Matches(Desc.Replace("and", ""), @"[\S]+"); 

    if (collection.Count > 3) 
    { 
     ErrorMsg.Append("Description should contain at most 3 words(excluding 'and')."); 
     ErrorMsg.Append("\\n"); 
    } 
} 

हालांकि मैं कर रहा हूँ कठिनाई जावास्क्रिप्ट में एक ही काम कर रही काम कर रहा है लागू किया है। मैंने निम्नलिखित कोशिश की है लेकिन यह अब तक काम नहीं कर रही है, इसलिए किसी ऐसे व्यक्ति की उम्मीद है जिसके पास जावास्क्रिप्ट का बेहतर ज्ञान है, तो त्रुटि दिखाई दे सकती है। ध्यान दें कि यदि पृष्ठ पर आग लगने वाले बड़े मान्य फ़ंक्शन का हिस्सा है - अलर्ट केवल यह देखने के लिए थे कि क्या इसमें यह पाया गया है (यदि यह नहीं है) - जब यह ब्लॉक हटा दिया जाता है तो पृष्ठ पर शेष जेएस हटा दिया जाता है अच्छा कर रहा है।

if (Desc.val().trim() != "") 
{ 
    alert('1'); 
    !regexWordRule.test(Desc.val()); 
    alert('2'); 

    if (Desc.val().match(regexWordRule).length > 3) 
    { 
     errorText += "Description should contain at most 3 words(excluding 'and')."; 
    } 

    valid = false; 
} 

और नीचे मेरा regexWordRule जेएस फ़ाइल के शीर्ष पर परिभाषित किया गया है।

var regexWordRule = /[\S]+/; 

उत्तर

2

आप एक बेहतर समाधान मिल सकता है, लेकिन इस दृष्टिकोण मेरे मन के लिए आया था, इसलिए मैं यह पोस्टिंग कर रहा हूँ:

var input = "and lorem and ipsum"; 

// remove ands 
var deandizedinput = input.replace(/\band\b/g, ' '); 

// replace all white spaces with a single space 
var normalizedinput = deandizedinput.replace(/\s+/g, ' '); 

// split the input and count words 
var wordcount = normalizedinput.trim().split(' ').length; 

फिडल here

+0

यह बहुत अच्छा काम करता है - बहुत धन्यवाद। मेरी समझ के लिए आप निकालने और खोज में \ b की व्याख्या कर सकते हैं? –

+1

\ बी शब्द सीमा से मेल खाता है। यहां यह सुनिश्चित करता है कि आप केवल किसी भी स्टैंडअलोन शब्द 'और' को हटा दें और इसमें शामिल शब्दों से एक सबस्ट्रिंग न करें (जैसे बैंड, परिदृश्य इत्यादि)। @ दिमा का जवाब भी देखें, जो रिमोट सत्यापन को देखने का सुझाव देता है, जो विचार करने योग्य है। –

1

यदि आप एमवीसी 3 का उपयोग कर रहे हैं, तो आप मॉडल (रिमोट एट्रिब्यूट) पर रिमोट सत्यापन का उपयोग कर सकते हैं। या आप AJAX अनुरोध के साथ इस तरह की सत्यापन मैनुअल बना सकते हैं।

यह आपके कोड को डुप्लिकेशन से बनाए रखेगा।