2016-07-07 9 views
6

में टाइप किया जा रहा मैं इस तरह एक साधारण इनपुट संख्या है से डॉट्स:रोकें पत्र 'ई' और एक इनपुट संख्या

<input type="number"/> 

एक नंबर या वर्ण "e" के अलावा अन्य इनपुट कुछ भी करने की कोशिश कर रहे हैं, यह काम नहीं करता है, लेकिन जब मैं अक्षर "ई" टाइप करता हूं तो यह काम करता है।

मैंने w3.org चश्मा की जांच की, और यह स्पष्ट रूप से बताता है कि सामान्य नोटेशन (पूर्व: 10.2) या वैज्ञानिक नोटेशन (पूर्व: 1e2) का उपयोग करके फ़्लोटिंग संख्या टाइप की जा सकती है।

तो मेरा सवाल यह है: क्या उपयोगकर्ता को ई अक्षरों और बिंदुओं को टाइप करने से रोकने का कोई तरीका है। एक और तरीके से कहा: क्या इनपुट नंबर को स्वीकार करने का कोई तरीका है केवल इंटेग्रर नंबर?

मुझे एंगुलर निर्देश के साथ ऐसा करने का विचार है कि मैं अपने इनपुट नंबर पर एक विशेषता के रूप में इनपुट करूंगा, लेकिन मुझे वास्तव में यह नहीं पता कि यह काम कैसे किया जाए।

संपादित: मैं करना चाहते हैं क्या एक ही व्यवहार अनुकरण करने के लिए है कि अब हम जब, या "ई" के अलावा अन्य वर्णमाला में किसी अन्य अक्षर टाइप करने की कोशिश कर रहा है "।"। मैं जो कहना चाहता हूं वह यह है कि मैं इनपुट में दिखाई देने वाला पत्र नहीं देखना चाहता (जैसा कि अब मामला है)।

+2

संभावित डुप्लिकेट के लिए है। कृपया देखें: http://stackoverflow.com/questions/19966417/prevent-typing-non-numeric-in-input-type-number?rq=1 – Mfusiki

+0

मेरे द्वारा प्राप्त किए गए सभी हैक्स एक ही व्यवहार को अनुकरण नहीं करते हैं "ई" की तुलना में कोई अन्य अक्षर टाइप करते समय हमारे पास वर्तमान में इनपुट नंबर है। – Mathemagician

+0

क्या आपने पाया है कि आप उत्तर में क्या चाहते थे? यदि हां, तो कृपया उत्तर – Weedoze

उत्तर

6

आप सही हैं कि इसे निर्देश के साथ किया जाना चाहिए। बस एक निर्देश बनाएं और इसे input से संलग्न करें। इस निर्देश को keypress और/या keydown ईवेंट सुनना चाहिए। संभवतः घटनाओं को पेस्ट करें। यदि दर्ज किया गया चार्ट एक 'ई' या डॉट-कॉल event.preventDefault() है;

angular.module('app', []) 
 
    .directive('yrInteger', yrInteger); 
 

 
function yrInteger() { 
 
    return { 
 
    restrict: 'A', 
 
    link: function(scope, element, attrs) { 
 
    
 
     element.on('keypress', function(event) { 
 

 
     if (!isIntegerChar()) 
 
      event.preventDefault(); 
 
     
 
     function isIntegerChar() { 
 
      return /[0-9]|-/.test(
 
      String.fromCharCode(event.which)) 
 
     } 
 

 
     })  
 
    
 
    } 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app"> 
 
    <input 
 
     type="number" 
 
     yr-integer 
 
     /> 
 
</div>

+1

के रूप में आपको जिसकी आवश्यकता है उसे चिह्नित करें यदि मैं कॉपी और पेस्ट करता हूं तो यह अभी भी ई –

+1

की अनुमति दे रहा है क्या आप एक प्लंकर या कुछ अन्य पुनरुत्पादित उदाहरण प्रदान कर सकते हैं? – Martin

+1

यू बस कुछ टेक्स्ट कॉपी करें जिसमें ई है और पेस्ट करें –

0

आप बस का उपयोग कर सकते आपके इनपुट के ng-pattern

नियंत्रक

$scope.onlyDigits= /^\d+$/; 

एचटीएमएल

<input ng-pattern="onlyDigits" type="number" /> 

यह पैटर्न उपयोग \d जो किसी भी सांख्यिक मान

+0

यह पैटर्न पूर्णांक की अनुमति देगा, पूर्णांक नहीं। उन सभी संख्याओं और उन संख्याओं के नकारात्मक समकक्षों को एकीकृत करता है। – Martin

+0

http: //www.w3schools।com/jsref/jsref_regexp_digit.asp -> \ d मेटाएक्टेक्टर का उपयोग 0-9 से अंक खोजने के लिए किया जाता है। – Weedoze

+0

हाँ। '\ d'' [0-9] 'जैसा ही है। इनमें से कोई भी सभी पूर्णांक से मेल नहीं खाता है। -1 एक वैध पूर्णांक है, '/^\ d + $ /। Test ('- 1') 'रिटर्न' झूठा '। – Martin

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