2013-02-21 86 views
5

मैं इस कोड है:मुद्दों

<form name="test"> 
    <input type="text" ng-model="code" name="code" ng-pattern="/^code_[0-9]+$/"/> 
    <div ng-show="test.code.$dirty && test.code.$invalid"> 
     Error: 
     <span ng-show="test.code.$error.pattern">Pattern fail.</span> 
    </div> 
</form> 

मैं इस कोड के साथ 2 मुद्दे हैं:

  1. "code_232", "code_232" "code_232 तरह स्ट्रिंग्स" प्रमाणीकरण में सफल । मैं regex के साथ विशेषज्ञ नहीं हूँ, तो यह बस regex मैं लिखा से संबंधित समस्या हो सकती है: /^code_[0-9]+$/

  2. तो मैं "code_23892" (एक सही स्ट्रिंग) लेखन शुरू करते हैं, मैं जब मैं 'त्रुटि संदेश मिलता है एम अभी भी लिख रहा है (test.code.$error.pattern = true)। क्या इससे बचने के लिए एक अंतर्निहित तरीका है? तो मेरी desidered व्यवहार है:

तो मैं "कॉड" लिखते हैं, और इनपुट अभी भी ध्यान केंद्रित किया है: कोई त्रुटि

तो मैं लिखना "कॉड" और इनपुट ध्यान केंद्रित खो देता है: त्रुटि।

यदि मैं "ए", "सीए", "कोआ" आदि लिखता हूं, त्रुटि, कारण पैटर्न पहले ही उल्लंघन हो चुका है।

क्या यह पहले से ही संभव है, या मैंने इसे प्राप्त करने के लिए एक custome सत्यापन निर्देश लिखा है?

अग्रिम धन्यवाद।

उत्तर

9

कारण यह है कि व्हाइटस्पेस विफल विफलता को ट्रिगर नहीं करता है क्योंकि एनजी-मॉडल स्वचालित रूप से मान को ट्रिम करता है। यदि आप यह नहीं चाहते हैं, तो आप ng-trim="false" को अपने <input /> पर जोड़ सकते हैं। ध्यान दें कि एनजी-ट्रिम एक बिल्कुल नई विशेषता है, इसलिए आपको अपने कोणीय संस्करण को अपडेट करना पड़ सकता है।

आपके दूसरे प्रश्न के बारे में; मुझे नहीं लगता कि आप लिखने के दौरान चलाने के लिए सत्यापन से बच सकते हैं, लेकिन जब आप इनपुट खो देता है तो आप केवल त्रुटि प्रदर्शित करने के लिए अपना कोड बदल सकते हैं। मुझे नहीं लगता कि ng-blur और ng-focus जैसे कुछ मौजूद हैं, लेकिन उन्हें लागू करने के लिए यह बहुत आसान होना चाहिए।

+0

मैं एंगुलरजेएस 1.0.5 (आज जारी) का उपयोग कर रहा हूं ... ng-trim = "false" काम नहीं करता – Bruno

+0

मुझे लगता है कि एनजी-ट्रिम 1.1 में नया है जो दुर्भाग्य से अस्थिर है। संपादित करें: यह 1.1.1 चेंजलॉग में है: https://github.com/angular/angular.js/blob/master/CHANGELOG.md#1.1.1 –

+0

+1 आपकी सहायता के लिए धन्यवाद! मैं आपके उत्तर को स्वीकार करने से पहले अधिक उत्तरों का इंतजार करूंगा। – Bruno