मैं jquery के साथ इनपुट फ़ील्ड से विशेष वर्णों को कैसे अवरुद्ध या प्रतिबंधित कर सकता हूं?


115

मैं विशेष वर्णों को jquery के साथ इनपुट क्षेत्र में टाइप करने से कैसे रोक सकता हूं?


एक jQuery सत्यापन प्लगइन का उपयोग करें , और केवल अल्फ़ान्यूमेरिकल वर्णों की अनुमति दें।
टॉमस एशचन

जवाबों:


133

नियमित अभिव्यक्ति का उपयोग करके एक सरल उदाहरण जिसे आप बदलने की अनुमति दे सकते हैं।

$('input').on('keypress', function (event) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }
});

49
यह पेस्ट किए गए पाठ के लिए काम नहीं करता है और उपयोगकर्ता को गैर-पाठ कुंजी जैसे बैकस्पेस, एरो कीज़ आदि से भी रोक सकता है
bendytree

6
यह फ़ायरफ़ॉक्स में बैकस्पेस को अनुमति नहीं देगा
एलेक्स

स्पेनिश शब्दों में काम नहीं करता है जैसे: एविऑन (विमान), árbol (पेड़), आदि
nikoskip

यह नवीनतम फ़ायरफ़ॉक्स ब्राउजर में काम नहीं करता है, लेकिन क्रोम में ठीक काम कर रहा है
फीनिक्स

यह समाधान मेरे लिए बूटस्ट्रैप-टैगइन्पुट तत्व पर काम करता है। पेस्ट इश्यू को संबोधित करने के लिए, आप "पेस्ट" को इवेंट पैरामीटर सूची में जोड़ सकते हैं, जैसे: $ ('इनपुट'), ('कीपर, पेस्ट' ', () => ........
जिम 22150 13:10

60

मैं एक ऐसे उत्तर की तलाश में था जो केवल अल्फ़ान्यूमेरिक वर्णों तक इनपुट को प्रतिबंधित करता है, लेकिन फिर भी नियंत्रण वर्णों (जैसे, बैकस्पेस, डिलीट, टैब) और कॉपी + पेस्ट के उपयोग की अनुमति है। प्रदान किए गए उत्तरों में से कोई भी नहीं जो मैंने इन सभी आवश्यकताओं को पूरा करने की कोशिश की, इसलिए मैं इस inputघटना का उपयोग करके निम्नलिखित आया ।

$('input').on('input', function() {
  $(this).val($(this).val().replace(/[^a-z0-9]/gi, ''));
});

संपादित करें:
जैसा कि rinogo ने टिप्पणियों में बताया है, उपरोक्त कोड स्निपेट इनपुट टेक्स्ट के बीच में टाइप करते समय कर्सर को इनपुट के अंत में ले जाता है। मेरा मानना ​​है कि नीचे कोड स्निपेट इस समस्या को हल करता है।

$('input').on('input', function() {
  var c = this.selectionStart,
      r = /[^a-z0-9]/gi,
      v = $(this).val();
  if(r.test(v)) {
    $(this).val(v.replace(r, ''));
    c--;
  }
  this.setSelectionRange(c, c);
});

1
+1 मैं इस तरह से उत्तर की तलाश में नीचे स्क्रॉल कर रहा था या मैं अपना उत्तर प्रस्तुत करूंगा। यह उत्तर किसी भी अस्वीकृत वर्ण को तुरंत फ़िल्टर कर देता है! महान!
एमिल

2
+1 चिपकाए गए पाठ के लिए काम करता है, एफएफ के बैकस्पेस के साथ हस्तक्षेप नहीं करता है और चाबियाँ हटाता है, और भरोसा नहीं करता है event.whichया event.keycode! काश मैं +10 कर पाता!
rinogo

3
... Chrome और IE में BUT करें, जब आप नए वर्ण लिखते हैं या बैकस्पेस का उपयोग करते हैं और इनपुट टेक्स्ट के बीच में कुंजियों को हटाते हैं , तो कर्सर पाठ के अंत में चला जाता है ...: / क्या इसके लिए कोई आसान समाधान है यह? मैं इसके लिए इतनी बुरी तरह से काम करना चाहता था!
18

इतना करीब ... क्रोम मोबाइल में इस कोड का बहुत अजीब व्यवहार है। पहले अक्षर पर और पीछे के स्थान पर भी कर्सर घूमता है।
जूलियानो

2
@ जूलियानो दिलचस्प, ऐसा लगता है कि सिलेक्शनस्टार्ट हमेशा क्रोम मोबाइल पर 0 रिटर्न देता है, चाहे कर्सर / कैरेट वर्तमान में स्थित हो। मुझे यकीन नहीं है (अभी तक) अगर यह बग या इच्छित व्यवहार है। मैं वर्तमान में इस मुद्दे पर शोध कर रहा हूं और अधिक जानने के बाद मैं अपने उत्तर या टिप्पणी को यहां अपडेट करूंगा।
रेक्समैक

48

संक्षिप्त उत्तर: 'कीपर' ईवेंट को रोकें:

$("input").keypress(function(e){
    var charCode = !e.charCode ? e.which : e.charCode;

    if(/* Test for special character */ )
        e.preventDefault();
})

लंबे उत्तर: jquery.alphanum जैसे प्लगइन का उपयोग करें

समाधान चुनते समय कई बातों पर ध्यान देना चाहिए:

  • पास्ट किया हुआ पाठ
  • उपरोक्त कोड द्वारा बैकस्पेस या F5 जैसे नियंत्रण वर्णों को रोका जा सकता है।
  • é, í, ä आदि
  • अरबी या चीनी ...
  • क्रॉस ब्राउज़र संगतता

मुझे लगता है कि यह क्षेत्र तीसरे पक्ष के प्लगइन का उपयोग करके वारंट के लिए पर्याप्त जटिल है। मैंने कई उपलब्ध प्लगइन्स को आज़माया लेकिन उनमें से प्रत्येक के साथ कुछ समस्याएँ पाईं इसलिए मैंने आगे जाकर jquery.alphanum लिखा । कोड इस तरह दिखता है:

$("input").alphanum();

या अधिक महीन दाने के नियंत्रण के लिए, कुछ सेटिंग्स जोड़ें:

$("#username").alphanum({
    allow      : "€$£",
    disallow   : "xyz",
    allowUpper : false
});

आशा करता हूँ की ये काम करेगा।


1
बहुत बढ़िया सामान आदमी, बहुत बढ़िया। मुझे बस स्लैश चार ('/') को सक्षम / अक्षम करने के लिए एक विकल्प जोड़ना था क्योंकि यह allowसेटिंग में डालते समय काम नहीं करता था । लेकिन यह jquery प्लगइन्स की सुंदरता है, तथ्य यह है कि आप उन्हें अपनी आवश्यकताओं के अनुरूप संशोधित कर सकते हैं। धन्यवाद!
एड्रियन मारिनिका

धन्यवाद एड्रियन। Btw, मैंने सिर्फ allowविकल्प का उपयोग करके स्लैश को सक्षम करने का प्रयास किया और इस कोड का उपयोग करके मेरे लिए ठीक काम किया: $('#firstName').alphanum({allow: "/"});कोई भी मौका जो आप अधिक जानकारी प्रदान कर सकते हैं? यदि डॉक्स के साथ कोई बग या समस्या है, तो इसे ठीक करना अच्छा होगा। चीयर्स
केव्सहेडी

हाय केशेहेडी, इस परीक्षण के लिए समय निकालने के लिए धन्यवाद। क्षमा करें, मैंने इसे स्पष्ट नहीं किया। समस्या यह थी कि मेरे पास भी थी allowOtherCharSets: falseऔर है allowCaseless: false। इनमें निर्धारित सेटिंग्स के साथ हस्तक्षेप किया गया allow। मेरे दृष्टिकोण से, मुझे लगता है कि allowविकल्प को अन्य सभी विकल्पों (जैसे allowOtherCharSetsया allowCaseless) को वीटो करना चाहिए । इसलिए यदि आप allowविकल्प में एक वर्ण निर्दिष्ट करते हैं , तो इसे कॉन्फ़िगरेशन ऑब्जेक्ट में सेट किए गए अन्य विकल्पों की परवाह किए बिना अनुमति दी जानी चाहिए। उसी के लिए जाता है disallow। लेकिन यह सिर्फ मेरी राय है। :) फिर से चीयर्स! :)
एड्रियन मारिनिका

अच्छी बात एड्रियन। मैंने आगे बढ़ और v1.0.6 में एक ठीक करने के लिए प्रकाशित किया है allowऔर disallowएक उच्च प्राथमिकता दी जाती है। यह # 7 अंक में लॉग इन है । आशा है कि यह मदद करता है
KevSheedy

6
"तो मैंने आगे बढ़कर jquery.alphanum लिखा" बहुत बढ़िया!
फेलिक्स

14

HTML5 के पैटर्न इनपुट विशेषता का उपयोग करें!

<input type="text" pattern="^[a-zA-Z0-9]+$" />

11
हालांकि यह समाधान अवांछित वर्णों को सबमिट होने से रोकता है, लेकिन यह अवांछित वर्णों को इनपुट क्षेत्र में प्रवेश करने से नहीं रोकता है।
रेक्समैक

1
जोखिम यह भी है कि उपयोगकर्ता HTML5 ब्राउज़र का उपयोग नहीं कर रहा है।
कैप्टन केनपाची

UX के अनुभव से, एक बात बहुत से लोग नफरत करते हैं कि वे जो टाइप कर सकते हैं उसमें प्रतिबंधित होने से ज्यादा यह कहा जा रहा है कि आपने बाद में गलत किया। - इनपुट के लिए त्रुटि संदेशों और अमान्य सूचनाओं को कम करना है।
जूलिक्स

1
@ जूलिक्स इसका मामला है। कुछ ऐसे क्षेत्र हैं जो केवल संख्यात्मक (मूल्य या किसी भी मुद्रा राशि, आदि) हो सकते हैं जहां यह वर्णमाला वर्ण इनपुट को सुनने के लिए समझ में नहीं आता है। लेकिन हाँ मेरा वास्तव में ओपी की समस्या का समाधान नहीं था, लेकिन यूएक्स समस्या के साथ मदद करने का एक अच्छा और आसान तरीका है।
keepitreal

13

आपका टेक्स्टबॉक्स:

<input type="text" id="name">

आपकी जावास्क्रिप्ट:

$("#name").keypress(function(event) {
    var character = String.fromCharCode(event.keyCode);
    return isValid(character);     
});

function isValid(str) {
    return !/[~`!@#$%\^&*()+=\-\[\]\\';,/{}|\\":<>\?]/g.test(str);
}

@ भार्गव राव, मैंने अन्य डुप्लिकेट पोस्ट को डिलीट कर दिया और इसे एक रिपॉजिट किया क्योंकि यह अधिक उपयुक्त था, इस ओर इशारा करने के लिए धन्यवाद
चैंडलर

11

कुछ भी अनुमति / अस्वीकृति के लिए रेगेक्स का उपयोग करें। इसके अलावा, स्वीकृत उत्तर की तुलना में थोड़ा अधिक मजबूत संस्करण के लिए, उन पात्रों को अनुमति देने की अनुमति नहीं है जो उनके साथ जुड़े एक महत्वपूर्ण मूल्य (बैकस्पेस, टैब, तीर कुंजी, हटाएं, आदि) कीपर ईवेंट के माध्यम से पहले गुजरने से हो सकते हैं और मूल्य के बजाय कीकोड के आधार पर कुंजी की जाँच करें।

$('#input').bind('keydown', function (event) {
        switch (event.keyCode) {
            case 8:  // Backspace
            case 9:  // Tab
            case 13: // Enter
            case 37: // Left
            case 38: // Up
            case 39: // Right
            case 40: // Down
            break;
            default:
            var regex = new RegExp("^[a-zA-Z0-9.,/ $@()]+$");
            var key = event.key;
            if (!regex.test(key)) {
                event.preventDefault();
                return false;
            }
            break;
        }
});

11

JQuery अल्फ़ान्यूमेरिक प्लगइन पर एक नज़र डालें। https://github.com/KevinSheedy/jquery.alphanum

//All of these are from their demo page
//only numbers and alpha characters
$('.sample1').alphanumeric();
//only numeric
$('.sample4').numeric();
//only numeric and the .
$('.sample5').numeric({allow:"."});
//all alphanumeric except the . 1 and a
$('.sample6').alphanumeric({ichars:'.1a'});

क्या पत्रों के लिए एक है? आम तौर पर मैं केवल संख्याओं के लिए नान का उपयोग करता हूं (जैसे ज़िप कोड या फोन)

3

टेक्स्टबॉक्स के onkeypress घटना पर कुछ जावास्क्रिप्ट कोड लिखें। आवश्यकता के अनुसार अपने टेक्स्टबॉक्स में चरित्र को अनुमति दें और प्रतिबंधित करें

function isNumberKeyWithStar(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 42)
        return false;
    return true;
}
function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}
function isNumberKeyForAmount(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46)
        return false;
    return true;
}


1
यह काम कर रहा है अगर मैं स्वयं टाइप करता हूं। लेकिन मैं कॉपी किए गए विशेष पात्रों को पेस्ट करने में सक्षम हूं।
सुनील गर्ग

3

मैं इस कोड को दूसरों को संशोधित करने के लिए उपयोग करता हूं जो मैंने देखा था। उपयोगकर्ता के लिए केवल भव्य लिखना अगर कुंजी दबाया या चिपकाए गए पाठ पैटर्न टेस्ट (मैच) पास करें (यह उदाहरण एक पाठ इनपुट है जो केवल 8 अंकों की अनुमति देता है)

$("input").on("keypress paste", function(e){
    var c = this.selectionStart, v = $(this).val();
    if (e.type == "keypress")
        var key = String.fromCharCode(!e.charCode ? e.which : e.charCode)
    else
        var key = e.originalEvent.clipboardData.getData('Text')
    var val = v.substr(0, c) + key + v.substr(c, v.length)
    if (!val.match(/\d{0,8}/) || val.match(/\d{0,8}/).toString() != val) {
        e.preventDefault()
        return false
    }
})

!e.charCode ? e.which : e.charCodeबस और क्यों नहीं e.charCode ? e.charCode : e.which?
मासिमिलियानो क्रूस

दशमलव संख्या स्वीकृति के लिए क्या परिवर्तन करने की आवश्यकता है?
ubm

2

यह एक उदाहरण है जो उपयोगकर्ता को "a" टाइप करने से रोकता है

$(function() {
$('input:text').keydown(function(e) {
if(e.keyCode==65)
    return false;

});
});

कुंजी कोड यहाँ refrence:
http://www.expandinghead.net/keycode.html


मुझे लगता है कि सभी कीकोड्स जिन्हें आप अनुमति नहीं देना चाहते हैं, कोशिश करने और प्रबंधित करने के लिए भारी हो सकते हैं।
RSolberg

यदि आप किसी को केवल 5 के माध्यम से नंबर 1 दर्ज करने में सक्षम होना चाहते हैं, तो आप अपने कोड के भीतर 5 कीकोड का प्रबंधन करते हैं।
RSolberg

2
यह वास्तव में एक बुरी योजना नहीं है अगर अल्फ्यूमरिक आपके लिए प्लगइन नहीं है। मैंने इसे एक स्विच / केस स्टेटमेंट के साथ काम किया। यह उदाहरण उन वर्णों को अस्वीकार करता है जिन्हें निर्देशिका नामों में अनुमति नहीं है: $ ('इनपुट [टाइप =' टेक्स्ट '], टेक्स्टारिया')। कीडडाउन (फ़ंक्शन (ईवीडी) {स्विच (ev.keyCode) {केस 47: केस 92: केस 63: केस 37: केस 42: केस 59: केस 124: केस 34: केस 60: केस 62: रिटर्न फर्जी;}});
एम मिलर

@ user434917, जब मैं Android मोबाइल क्रोम ब्राउज़र से इसका परीक्षण कर रहा हूँ तो आपका कोड काम नहीं कर रहा है। क्या आपके पास इसका कोई हल है ..?
प्राणेश जनार्दन

2
$(function(){
      $('input').keyup(function(){
        var input_val = $(this).val();
        var inputRGEX = /^[a-zA-Z0-9]*$/;
        var inputResult = inputRGEX.test(input_val);
          if(!(inputResult))
          {     
            this.value = this.value.replace(/[^a-z0-9\s]/gi, '');
          }
       });
    });

1

हाँ आप jQuery का उपयोग करके कर सकते हैं:

<script>
$(document).ready(function()
{
    $("#username").blur(function()
    {
        //remove all the class add the messagebox classes and start fading
        $("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
        //check the username exists or not from ajax
        $.post("user_availability.php",{ user_name:$(this).val() } ,function(data)
        {
          if(data=='empty') // if username is empty
          {
            $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('Empty user id is not allowed').addClass('messageboxerror').fadeTo(900,1);
            });
          }
          else if(data=='invalid') // if special characters used in username
          {
            $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('Sorry, only letters (a-z), numbers (0-9), and periods (.) are allowed.').addClass('messageboxerror').fadeTo(900,1);
            });
          }
          else if(data=='no') // if username not avaiable
          {
            $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('User id already exists').addClass('messageboxerror').fadeTo(900,1);
            });     
          }
          else
          {
            $("#msgbox").fadeTo(200,0.1,function()  //start fading the messagebox
            { 
              //add message and change the class of the box and start fading
              $(this).html('User id available to register').addClass('messageboxok').fadeTo(900,1); 
            });
          }

        });

    });
});
</script>
<input type="text" id="username" name="username"/><span id="msgbox" style="display:none"></span>

और आपके user_avucation.php के लिए स्क्रिप्ट होगी:

<?php
include'includes/config.php';

//value got from the get method
$user_name = trim($_POST['user_name']);

if($user_name == ''){
    echo "empty";
}elseif(preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $user_name)){
    echo "invalid";
}else{
    $select = mysql_query("SELECT user_id FROM staff");

    $i=0;
    //this varible contains the array of existing users
    while($fetch = mysql_fetch_array($select)){
        $existing_users[$i] = $fetch['user_id'];
        $i++;
    }

    //checking weather user exists or not in $existing_users array
    if (in_array($user_name, $existing_users))
    {
        //user name is not availble
        echo "no";
    } 
    else
    {
        //user name is available
        echo "yes";
    }
}
?>

मैं के लिए जोड़ने की कोशिश की / और \ नहीं बल्कि सफल रहा।


आप इसे जावास्क्रिप्ट का उपयोग करके भी कर सकते हैं और कोड होगा:

<!-- Check special characters in username start -->
<script language="javascript" type="text/javascript">
function check(e) {
    var keynum
    var keychar
    var numcheck
    // For Internet Explorer
    if (window.event) {
        keynum = e.keyCode;
    }
    // For Netscape/Firefox/Opera
    else if (e.which) {
        keynum = e.which;
    }
    keychar = String.fromCharCode(keynum);
    //List of special characters you want to restrict
    if (keychar == "'" || keychar == "`" || keychar =="!" || keychar =="@" || keychar =="#" || keychar =="$" || keychar =="%" || keychar =="^" || keychar =="&" || keychar =="*" || keychar =="(" || keychar ==")" || keychar =="-" || keychar =="_" || keychar =="+" || keychar =="=" || keychar =="/" || keychar =="~" || keychar =="<" || keychar ==">" || keychar =="," || keychar ==";" || keychar ==":" || keychar =="|" || keychar =="?" || keychar =="{" || keychar =="}" || keychar =="[" || keychar =="]" || keychar =="¬" || keychar =="£" || keychar =='"' || keychar =="\\") {
        return false;
    } else {
        return true;
    }
}
</script>
<!-- Check special characters in username end -->

<!-- in your form -->
    User id : <input type="text" id="txtname" name="txtname" onkeypress="return check(event)"/>

2
यार, तुमने अतिरिक्त कोड का एक पूरा गुच्छा शामिल किया है जो शायद सहायक नहीं है। क्या आप इसे नंगे न्यूनतम तक काट सकते हैं? और वह jQuery के बारे में पूछ रहा था, मुझे यकीन नहीं है कि क्या PHP प्रासंगिक है।
साइमन ईस्ट

@PHP फेरारी: मैं जावास्क्रिप्ट कोड का उपयोग कर रहा हूं, आपका कोड ठीक काम कर रहा है, ग्राहक विशेष चरित्र में प्रवेश करता है तो मैं अलर्ट पॉपअप संदेश कैसे प्रदर्शित कर सकता हूं। "स्पेशल कैरेक्टर नॉट अलाउड" जैसा संदेश।
Gem

1

बस संख्या:

$ ('input.time')। कीडडाउन (फंक्शन (e) {if (e.keyCode> = 48 && e.keyCode <= 57) {return true;} अौर {return false;}}}।

या ":" सहित समय के लिए

$ ('input.time')। कीडाउन (फ़ंक्शन (e) {if (e.keyCode> = 48 && e.keyCode <= 58) {वापसी सच;} और {{झूठा वापस;}}};

हटाएं और बैकस्पेस भी शामिल करें:

INR असत्य; } });

दुर्भाग्य से यह एक iMAC पर काम करने के लिए नहीं मिल रहा है


1

डेल के जवाब के लिए एलेक्स की टिप्पणी पर टिप्पणी करना चाहता था। संभव नहीं है (पहले "कितना" रेप की जरूरत है? यह बहुत जल्द नहीं होगा .. अजीब प्रणाली।) तो एक जवाब के रूप में:

बैकस्पेस को रेगेक्स परिभाषा में इस तरह से \ b जोड़कर जोड़ा जा सकता है: [a-zA-Z0-9 \ b]। या आप बस पूरी लैटिन रेंज को अनुमति देते हैं, जिसमें कम या ज्यादा "नॉन एग्जॉटिक" अक्षर भी शामिल हैं (बैकस्पेस जैसे चार्ट को भी नियंत्रित करते हैं): ^ [\ u0000- \ u024F \ u20AC] + $

केवल असली यूनिकोड चार लेट के बाहर यूरो का चिह्न (20ac) है, जो भी आपको आवश्यकता हो उसे जोड़ सकते हैं।

कॉपी और पेस्ट के माध्यम से दर्ज किए गए इनपुट को संभालने के लिए, बस "परिवर्तन" घटना के लिए भी बाध्य करें और इनपुट की भी जांच करें - इसे हटा देना या इसे स्ट्रिप करना / "समर्थित वर्ण नहीं" जैसे त्रुटि संदेश देना ..

if (!regex.test($j(this).val())) {
  alert('your input contained not supported characters');
  $j(this).val('');
  return false;
}

1

कीपर पर विशेष वर्णों को प्रतिबंधित करें। यहां कुंजी कोड के लिए एक परीक्षण पृष्ठ है: http://www.asquare.net/javascript/tests/KeyCode.html

var specialChars = [62,33,36,64,35,37,94,38,42,40,41];

some_element.bind("keypress", function(event) {
// prevent if in array
   if($.inArray(event.which,specialChars) != -1) {
       event.preventDefault();
   }
});

कोणीय में, मुझे अपने टेक्स्टफील्ड में एक उचित मुद्रा प्रारूप की आवश्यकता थी। मेरा समाधान:

var angularApp = angular.module('Application', []);

...

// new angular directive
angularApp.directive('onlyNum', function() {
    return function( scope, element, attrs) {

        var specialChars = [62,33,36,64,35,37,94,38,42,40,41];

        // prevent these special characters
        element.bind("keypress", function(event) {
            if($.inArray(event.which,specialChars) != -1) {
                prevent( scope, event, attrs)
             }
        });

        var allowableKeys = [8,9,37,39,46,48,49,50,51,52,53,54,55,56
            ,57,96,97,98,99,100,101,102,103,104,105,110,190];

        element.bind("keydown", function(event) {
            if($.inArray(event.which,allowableKeys) == -1) {
                prevent( scope, event, attrs)
            }
        });
    };
})

// scope.$apply makes angular aware of your changes
function prevent( scope, event, attrs) {
    scope.$apply(function(){
        scope.$eval(attrs.onlyNum);
        event.preventDefault();
    });
    event.preventDefault();
}

Html में निर्देश जोड़ें

<input only-num type="text" maxlength="10" id="amount" placeholder="$XXXX.XX"
   autocomplete="off" ng-model="vm.amount" ng-change="vm.updateRequest()">

और इसी कोणीय नियंत्रक में मैं केवल केवल 1 अवधि होने की अनुमति देता हूं, पाठ को संख्या में परिवर्तित करता हूं और 'ब्लर' पर नंबर राउंडिंग जोड़ता हूं

...

this.updateRequest = function() {
    amount = $scope.amount;
    if (amount != undefined) {
        document.getElementById('spcf').onkeypress = function (e) {
        // only allow one period in currency
        if (e.keyCode === 46 && this.value.split('.').length === 2) {
            return false;
        }
    }
    // Remove "." When Last Character and round the number on blur
    $("#amount").on("blur", function() {
      if (this.value.charAt(this.value.length-1) == ".") {
          this.value.replace(".","");
          $("#amount").val(this.value);
      }
      var num = parseFloat(this.value);
      // check for 'NaN' if its safe continue
      if (!isNaN(num)) {
        var num = (Math.round(parseFloat(this.value) * 100) / 100).toFixed(2);
        $("#amount").val(num);
      }
    });
    this.data.amountRequested = Math.round(parseFloat(amount) * 100) / 100;
}

...

1

विशेष पात्रों को बदलने के लिए, स्थान और निचले मामले में परिवर्तित करें

$(document).ready(function (){
  $(document).on("keyup", "#Id", function () {
  $("#Id").val($("#Id").val().replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '').toLowerCase());
 }); 
});

0
[User below code to restrict special character also    

$(h.txtAmount).keydown(function (event) {
        if (event.shiftKey) {
            event.preventDefault();
        }
        if (event.keyCode == 46 || event.keyCode == 8) {
        }
        else {
            if (event.keyCode < 95) {
                if (event.keyCode < 48 || event.keyCode > 57) {
                    event.preventDefault();
                }
            }
            else {
                if (event.keyCode < 96 || event.keyCode > 105) {
                    event.preventDefault();
                }
            }
        }


    });]

4
स्पष्टीकरण के बिना कोड-केवल उत्तर बहुत उपयोगी नहीं हैं।
वोमेनस

0

केवल पाठ बॉक्स में नंबर की अनुमति दें (अक्षर और विशेष वर्ण प्रतिबंधित करें)

        /*code: 48-57 Numbers
          8  - Backspace,
          35 - home key, 36 - End key
          37-40: Arrow keys, 46 - Delete key*/
        function restrictAlphabets(e){
            var x=e.which||e.keycode;
            if((x>=48 && x<=57) || x==8 ||
                (x>=35 && x<=40)|| x==46)
                return true;
            else
                return false;
        }

0
/**
     * Forbids special characters and decimals
     * Allows numbers only
     * */
    const numbersOnly = (evt) => {

        let charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode === 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
            return false;
        }

        let inputResult = /^[0-9]*$/.test(evt.target.value);
        if (!inputResult) {
            evt.target.value = evt.target.value.replace(/[^a-z0-9\s]/gi, '');
        }

        return true;
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.