0

Having trouble with a combined file of html, CSS and javascript that is giving me an undisclosed error, used JSLint to check for errors but the only errors I were given were 'Line is longer than 80 characters', 'use spaces not tabs' and 'unexpected var'. Could someone please give me some help I'm real stuck.

"use strict";

//validate form inputs from payment.html
function validate() {

    var errMsg = "";
    var result = true;      //assumes no errors

    //assign elements to variables
    var mastercard_check = document.getElementById("mastercard").checked;
    var visa_check = document.getElementById("visa").checked;
    var express_check = document.getElementById("express").checked;
    var credit_name = document.getElementById("credit_name").value;
    var credit_number = document.getElementById("credit_number").value;
    var credit_expiry = document.getElementById("credit_expiry").value;
    var credit_vv = document.getElementById("credit_vv").value;

    //validations for form
    if (!(mastercard_check || visa_check || express_check)) {
        errMsg += "Please choose a card type\n";
        result = false;
    }

    if (credit_name.length > 40) {
        errMsg += "Please enter a name for your credit card between 1-40 characters\n";
        result = false;
    }
    else if (!credit_name.match(/^[a-zA-Z ]+$/)) {
        errMsg += "Credit card name can only contain alpha characters\n";
        result = false;
    }

    if (isNaN(credit_number)) {
        errMsg = errMsg + "Credit card number must contain digits only\n";
        result = false;
    }
    else if (credit_number.length < 15 || credit_number.length > 16){
        errMsg = errMsg + "Credit card number must contian either 15 or 16 digits\n";
        result = false;
    }
    else {
        var tempMsg = checkCardNumber(credit_number);
        if (tempMsg != "") {
            errMsg += tempMsg;
            result = false;
        }
    }

    if (!credit_expiry.match(/^\d{2}-\d{2}$/)) {
        errMsg = errMsg + "Credit Card expiry must follow the format mm-yy\n";
        result = false;
    }

    if (!credit_vv) {
        errMsg = errMsg + "Please enter a Credit Card Verification Value\n";
        result = false;
    }

    if (errMsg != "") {
        alert(errMsg);
    }

    return result;
}

//obtain the credit card type
function getCardType() {

    var cardType = "Unknown";
    var cardArray = document.getElementById("credit_type").getElementsByTagName("input");

    for(var i = 0; i < cardArray.length; i++) {
        if (cardArray[i].checked) {
            cardType = cardArray[i].value;
        }
    }
    return cardType

}

//check hte card number matches the chosen card type
function checkCardNumber(credit_number) {
    var errMsg = "";
    var card = getCardType();
    switch(card) {
        case "visa":
            if (!(credit_number.length == 16)) {
                errMsg = "Visa number must contian 16 digits\n";
            }
            else if (!credit_number.match(/^(4).*$/)) {
                errMsg = "Visa number must start with a 4. \n";
            }
            break;
        case "mastercard":
            if (!(credit_number.length == 16)) {
                errMsg = "Mastercard number must contian 16 digits\n";
            }
            else if (!credit_number.match(/^(51|52|53|54|55).*$/)) {
                errMsg = "Mastercard number must start with digits 51 through 55. \n";
            }
            break;
        case "express":
            if (!(credit_number.length == 15)) {
                errMsg = "American Express number must contian 15 digits\n";
            }
            else if (!credit_number.match(/^(34|37).*$/)) {
                errMsg = "American Express number must start with 34 or 37. \n";
            }
            break;
    }
    return errMsg;
}

//calculate total cost using the meal size and quantity chosen
function calcCost(size, quantity){
    var cost = 0;
    if (size.search("three") != -1) cost = 100;
    if (size.search("four")!= -1) cost += 150;
    if (size.search("five")!= -1) cost += 200;
}
//get the stored values
function getInfo(){
    var cost = 0;
    if(sessionStorage.firstname != undefined){
        document.getElementById("confirm_name").textContent = sessionStorage.firstname + " " + sessionStorage.lastname;

    document.getElementById("confirm_address").textContent = sessionStorage.address + " " + sessionStorage.suburb + " " + sessionStorage.state + " " + sessionStorage.postcode;

    document.getElementById("confirm_details").textContent = sessionStorage.email + " " + sessionStorage.phone;

    document.getElementById("confirm_preferred").textContent = sessionStorage.preferred;

    document.getElementById("confirm_package").textContent = sessionStorage.package;

    document.getElementById("confirm_size").textContent = sessionStorage.size;

    document.getElementById("confirm_quantity").textContent = sessionStorage.quantity;
        cost = calcCost(sessionStorage.size, sessionStorage.quantity);




        document.getElementById("firstname").value = sessionStorage.firstname;
    document.getElementById("lastname").value = sessionStorage.lastname;
    document.getElementById("street").value = sessionStorage.street;
      document.getElementById("suburb").value = sessionStorage.suburb;
      document.getElementById("state").value = sessionStorage.state;
      document.getElementById("postcode").value = sessionStorage.postcode;
      document.getElementById("phone").value = sessionStorage.phone;
      document.getElementById("email").value = sessionStorage.email;
      document.getElementById("preferred").value = sessionStorage.preferred;
      document.getElementById("deal").value = sessionStorage.deal;
      document.getElementById("quality").value = sessionStorage.quality;
      document.getElementById("quantity").value = sessionStorage.quantity;
      document.getElementById("extrabags").value = sessionStorage.extrabags;
      document.getElementById("accomodation").value = sessionStorage.accomodation;
      document.getElementById("travel").value = sessionStorage.travel;
    document.getElementById("prohibiteditems").value = sessionStorage.prohibiteditems;
    document.getElementById("disabilityprecaution").value = sessionStorage.disabilityprecaution;
    }

}

function cancelBooking() {
window.location = "index.html"
}

function init() {

    getInfo();
    var payment = document.getElementById("payment");
    payment.onsubmit = function() {validate()};
    var cancel = document.getElementById("cancel");
    cancel.onclick = function cancelBooking()

}

window.onload = init;

  • Please provide a simple self-contained example that contains the smallest amount of code that reproduces your problem. You also need to provide your input data. [This post](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610) may be helpful. – Limey Jun 01 '20 at 09:38

2 Answers2

0

it's common rule of eslint, if you want to ignore these error on you code, you can use eslint-disable on top of your js code

/* eslint-disable */

alert('foo');
fachrilinggo
  • 243
  • 1
  • 2
  • 7
0

The problem is inside your init() function. I have corrected it please try using this. You were calling the function cancelBooking() like this function cancelBooking() which was giving error.

function init() {

    getInfo();
    var payment = document.getElementById("payment");
    payment.onsubmit = function() {validate()};
    var cancel = document.getElementById("cancel");
    cancel.onclick = cancelBooking()

}
Ayyub Kolsawala
  • 809
  • 8
  • 15