2016-04-25 10 views
5

कैसे फॉर्मेट और प्रत्येक 4 अंकों के बीच रिक्त स्थान के साथ एक क्रेडिट कार्ड नंबर मान्य करने के लिए लिखते समय:स्वरूप क्रेडिट कार्ड नंबर

eg: 4464 6846 4354 3564 

मैं कोशिश की है:

$('.creditno').keyup(function() { 
    cc = $(this).val().split("-").join(""); 

    cc = cc.match(new RegExp('.{1,4}$|.{1,4}', 'g')).join("-"); 

    $(this).val(cc); 

}); 

कृपया मदद

+1

आपने अभी तक क्या प्रयास किया है? :) –

+4

संभावित डुप्लिकेट [PHP में क्रेडिट कार्ड को सत्यापित करने का सबसे अच्छा तरीका क्या है?] (Http: // stackoverflow।कॉम/प्रश्न/174730/सबसे अच्छा तरीका-से-वैध-ए-क्रेडिट-कार्ड-इन-php) – Daan

+1

Google में कई उदाहरण हैं, आप इसे Google करते हैं? – nisar

उत्तर

9

कोशिश यह:

function cc_format(value) { 
    var v = value.replace(/\s+/g, '').replace(/[^0-9]/gi, '') 
    var matches = v.match(/\d{4,16}/g); 
    var match = matches && matches[0] || '' 
    var parts = [] 

    for (i=0, len=match.length; i<len; i+=4) { 
     parts.push(match.substring(i, i+4)) 
    } 

    if (parts.length) { 
     return parts.join(' ') 
    } else { 
     return value 
    } 
} 

नोट: विस्तृत जानकारी https://www.peterbe.com/plog/cc-formatter के लिए इसे जांचें।

केवल नंबर दर्ज करने के लिए उपयोगकर्ता को प्रतिबंधित करने के लिए:

जावास्क्रिप्ट रास्ता

<input type="text" id="txt_cardNumber" name="txt_cardNumber" onkeypress="return checkDigit(event)"> 

function checkDigit(event) { 
    var code = (event.which) ? event.which : event.keyCode; 

    if ((code < 48 || code > 57) && (code > 31)) { 
     return false; 
    } 

    return true; 
} 

या

function checkDigit() { 
    var allowedChars = ""; 
    var entryVal = document.getElementById('txt_cardNumber').value(); 
    var flag; 

    for(var i=0; i<entryVal.length; i++){  
     flag = false; 

     for(var j=0; j<allowedChars.length; j++){ 
      if(entryVal.charAt(i) == allowedChars.charAt(j)) { 
       flag = true; 
      } 
     } 

     if(flag == false) { 
      entryVal = entryVal.replace(entryVal.charAt(i),""); i--; 
     } 
    } 

    return true; 
} 

एचटीएमएल 5 रास्ता

<input type="text" id="txt_cardNumber" name="txt_cardNumber" pattern="[0-9.]+"> 
<input type="number" id="txt_cardNumber" name="txt_cardNumber"> 

jQuery रास्ता

$("#txt_cardNumber").keypress(function (e) { 
    if ((e.which < 48 || e.which > 57) && (e.which !== 8) && (e.which !== 0)) { 
     return false; 
    } 

    return true; 
}); 

नोट: जांच करें here विभिन्न कुंजी कोड के बारे में और अधिक जानकारी प्राप्त करने के लिए।

+2

ओपी को यह क्यों करना चाहिए? कोड के अपने टुकड़े के बारे में कुछ और जानकारी दें। – Daan

+0

यही कारण है कि मैंने समाधान के बारे में अधिक जानकारी प्राप्त करने के लिए लिंक जोड़ा। – prava

+0

लिंक में कोई विस्तृत जानकारी नहीं है। * वास्तव में * क्रेडिट कार्ड की जांच करें, आपको एक व्यापारी खाते की आवश्यकता है जिसे आपने शायद उल्लेख किया हो। – Daan

1
<?php 


function luhn_check($number) { 

    // Strip any non-digits (useful for credit card numbers with spaces and hyphens) 
    $number=preg_replace('/\D/', '', $number); 

    // Set the string length and parity 
    $number_length=strlen($number); 
    $parity=$number_length % 2; 

    // Loop through each digit and do the maths 
    $total=0; 
    for ($i=0; $i<$number_length; $i++) { 
    $digit=$number[$i]; 
    // Multiply alternate digits by two 
    if ($i % 2 == $parity) { 
     $digit*=2; 
     // If the sum is two digits, add them together (in effect) 
     if ($digit > 9) { 
     $digit-=9; 
     } 
    } 
    // Total up the digits 
    $total+=$digit; 
    } 

    // If the total mod 10 equals 0, the number is valid 
    return ($total % 10 == 0) ? TRUE : FALSE; 

} 
?> 
+0

धन्यवाद, मुझे यह आज़माएं – youv

1
function testCreditCard() { 
    myCardNo = document.getElementById('CardNumber').value; 
    myCardType = document.getElementById('CardType').value; 
    if (checkCreditCard (myCardNo,myCardType)) { 
    alert ("Credit card has a valid format") 
    } 
    else {alert (ccErrors[ccErrorNo])}; 
} 

जांच lib http://www.braemoor.co.uk/software/creditcard.shtml

2

के लिए इस लिंक का पता लगाएं

Plunker for Formatting Credit Card Numbers

Angularjs निर्देश का उपयोग कर

। XXXXXxxxxxxx3456 से प्रारूप में प्रारूप कार्ड नंबर।

angular.module('myApp', []) 

    .directive('maskInput', function() { 
    return { 
      require: "ngModel", 
      restrict: "AE", 
      scope: { 
       ngModel: '=', 
      }, 
      link: function(scope, elem, attrs) { 
       var orig = scope.ngModel; 
       var edited = orig; 
       scope.ngModel = edited.slice(4).replace(/\d/g, 'x') + edited.slice(-4); 

       elem.bind("blur", function() { 
        var temp; 
        orig = elem.val(); 
        temp = elem.val(); 
        elem.val(temp.slice(4).replace(/\d/g, 'x') + temp.slice(-4)); 
       }); 

       elem.bind("focus", function() { 
        elem.val(orig); 
       }); 
      } 
     }; 
    }) 
    .controller('myCtrl', ['$scope', '$interval', function($scope, $interval) { 
    $scope.creditCardNumber = "123456789"; 
    }]); 
1

मैं, एक उचित समाधान है कि पाठ संपादन के साथ काम करता नहीं पा सके तो ये रहा:

$("#cardNumber").on("keydown", function(e) { 
    var cursor = this.selectionStart; 
    if (this.selectionEnd != cursor) return; 
    if (e.which == 46) { 
     if (this.value[cursor] == " ") this.selectionStart++; 
    } else if (e.which == 8) { 
     if (cursor && this.value[cursor - 1] == " ") this.selectionEnd--; 
    } 
}).on("input", function() { 
    var value = this.value; 
    var cursor = this.selectionStart; 
    var matches = value.substring(0, cursor).match(/[^0-9]/g); 
    if (matches) cursor -= matches.length; 
    value = value.replace(/[^0-9]/g, "").substring(0, 16); 
    var formatted = ""; 
    for (var i=0, n=value.length; i<n; i++) { 
     if (i && i % 4 == 0) { 
      if (formatted.length <= cursor) cursor++; 
      formatted += " "; 
     } 
     formatted += value[i]; 
    } 
    if (formatted == this.value) return; 
    this.value = formatted; 
    this.selectionEnd = cursor; 
}); 

keydown श्रोता बैकस्पेस के लिए कर्सर की स्थिति को समायोजित और पिछले स्थानांतरित करने के लिए नष्ट करने के लिए की जरूरत है रिक्त स्थान। इसका उपयोग चरित्र प्रविष्टि को प्रतिबंधित करने के लिए नहीं किया जाना चाहिए, क्योंकि आप इसके लिए कुंजी कोड का उपयोग नहीं करना चाहते हैं।

input श्रोता पाठ का पुनर्निर्माण करता है, गैर-संख्याओं को स्ट्रिप्स करता है, प्रत्येक 4 वर्णों को रिक्त स्थान जोड़ता है, और कर्सर की स्थिति को संरक्षित करता है।

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