मैं यह नहीं समझ सकता कि एक चर को वर्णों की एक निश्चित लंबाई के बराबर कैसे बनाया जाए। जैसा कि मैं जावास्क्रिप्ट के माध्यम से फॉर्म सत्यापन बनाने की कोशिश कर रहा हूं। हालांकि, यह काम नहीं कर रहा प्रतीत होता है। वह खंड जो मान्य प्रतीत नहीं होता है वह अंतिम अन्य विवरण है जहां मैं एक मास्टर, वीजा और अमेरिकी कार्ड की लंबाई की तुलना कर रहा हूं, हालांकि यह मुझे किसी भी तरह के पात्रों को रखने की अनुमति दे रहा है।

मैंने इस्तेमाल किए जा रहे प्रतीकों को बदलने की कोशिश की है, हालांकि, मुझे लगता है कि !== करना सही काम है।

function orderValidate() { //need to work on this
    //validate contact number to only be numbers\
    var american = document.getElementById("americanInput").value;
    var master = document.getElementById("masterInput").value;
    var visa = document.getElementById("visaInput").value;
    var email = document.getElementById("email");
    var errMsg = document.getElementById("errMsg");
    var numberRegex = /^\d{10}$/;
    var emailRegex = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
    var contactNumber = document.getElementById("number").value;
    if (contactNumber.length < 8 || (!contactNumber.match(numberRegex))) {
        errMsg.innerHTML = "Please enter a valid phone number";
        return false;
    } else if (email.length < 7 || !email.match(emailRegex)) {
        errMsg.innerHTML = "Please enter a valid email";
        return false;
    } else if (master.length !== 16|| visa.length !== 16 || american.length 
    !== 15){
        errMsg.innerHTML = "Please check your card details again";
        return false;
    }

    }
        <div class="wrapper">
        <input type="text" name="card" id="visaInput">
        <input type="text" name="card" id="masterInput">
        <input type="text" name="card" id="americanInput">
        </div>

function showAmerican() {
    document.getElementById("americanInput").style.display = 'block';
    document.getElementById("masterInput").style.display = 'none';
    document.getElementById("visaInput").style.display = 'none';
}

function showVisa() {
    document.getElementById("visaInput").style.display = 'block';
    document.getElementById("americanInput").style.display = 'none';
    document.getElementById("masterInput").style.display = 'none';
}

function showMastercard() {
    document.getElementById("masterInput").style.display = 'block';
    document.getElementById("americanInput").style.display = 'none';
    document.getElementById("visaInput").style.display = 'none';
}
    master.onclick = showMastercard;
    american.onclick = showAmerican;
    repeat.onclick = repeatAddress;

एक बार इस चरण में पहुंचने के बाद फ़ॉर्म मान्य करने के बजाय इसे सीधे भेज देता है ...

1
PandaPlaysAll 6 अक्टूबर 2019, 07:54

3 जवाब

सबसे बढ़िया उत्तर

समस्या यह है कि आप सभी उपलब्ध कार्डों की कार्ड लंबाई की जांच कर रहे हैं, भले ही वे दर्ज न हों। आपको केवल दर्ज किए गए कार्ड की लंबाई की जांच करनी चाहिए।

if (master.length !== 16|| visa.length !== 16 || american.length !== 15) {}

उपरोक्त शर्त हर समय सत्य होगी। ऐसा इसलिए है क्योंकि जब फॉर्म जमा किया जाता है, तो केवल एक कार्ड दर्ज किया जाता है और अन्य कार्डों के फॉर्म फ़ील्ड खाली हो जाते हैं। तब उनकी लंबाई 0 होगी और 15 या 16 के बराबर नहीं होगी, जो इस स्थिति को हर समय सही बनाती है।

if (master.length > 0 && master.length !== 16 || 
  visa.length > 0 && visa.length !== 16 ||
  american.length > 0 && american.length !== 15) {}

जैसा कि ऊपर दिखाया गया है, स्थिति को बदलने से यह जांचा जाएगा कि क्या कार्ड फ़ील्ड दर्ज किया गया है और केवल तभी यह मूल्यांकन करेगा कि यह आवश्यक लंबाई से मेल खाता है या नहीं।

0
Nikhil 6 अक्टूबर 2019, 05:31

document.getElementById("americanInput").value एक स्ट्रिंग है। प्रयत्न

  • parseInt(document.getElementById("americanInput").value) या
  • +document.getElementById("americanInput").value जो संकार्य को एक संख्या में परिवर्तित करता है
0
theincrediblethor 6 अक्टूबर 2019, 05:08

इसके अलावा, सभी के लिए अलग-अलग फ़ंक्शन बनाने के बजाय, आप एक फ़ंक्शन बना सकते हैं, उदाहरण के लिए शोकार्ड और AMEX, VISA, मास्टर उदाहरण जैसे पैरामीटर पास करें।

showCard(cardName) {
//functionBody
}

और फिर फ़ंक्शन को कॉल करें

showCard('American');
showCard('Visa');

यह आपके कोड को ऑप्टिमाइज़ करेगा :) चीयर्स

0
tbaveja 6 अक्टूबर 2019, 05:11