Use JS to Display Dropdown List and Convert Name a

2019-09-09 20:36发布

问题:

I have a few problems I can't seem to solve.

  1. I need to display the drop down state values in an output window. Right now I have an alert box to show what the user inputted, but I need the information to now display in new window.

  2. I also need to convert the name and city values so the first letter is upper case and the rest are lowercase. Example, if I type the text box for name, "jOhN" it will display as "John" in the new output window once I hit submit. The same goes for the City text box. We're told to use something like Name: Namestring and City: Citystring.

I'm pretty sure I have to do something in the doSubmit() function and form section but I'm not quite sure what that is. Any assistance you can offer would be wonderful. Below is what I have right now.

I made some updates to the code with a drop down list but now the alert box doesn't appear when I select submit. I'm new to Javascript, can anyone help?

    <html>
    <head>
    <title>HTML and JavaScript</title>
    <script>
    function doSubmit()
    {
        // MD This runs the validate fieldes
        if( ! (validateText() && validateZipCode() && validatePhoneNumber() && validateRadio() && validateCheck()) ) return false;

        /* MD this generates the box message */
        var fields=["customer", "address", "city", "state", "zip", "phone", "email","sizes"];
        var fieldNames=["Name", "Address", "City", "State", "Zip", "Phone", "Email","Size"];
        var msg = "";
        for(i=0;i<fields.length;i++)
            msg += fieldNames[i] + ": " + document.PizzaForm[ fields[i] ].value + "\n";
        msg += "Toppings: ";
        for(i=0;i<document.PizzaForm.toppings.length;i++)
            if(document.PizzaForm.toppings[i].checked)
                msg += (i==0?"":",")+document.PizzaForm.toppings[i].value;/* MD this displays the toppings from the check boxes in an alert box */
        alert(msg);
        var i = document.PizzaForm.states.options.selectedIndex; //new state code added
        var text = document.PizzaForm.states.options[i].text;
        var value = document.PizzaForm.states.options[i].value;
        msg += "State: ";
        for(i=0;i<document.PizzaForm.states.length;i++)
            if(document.PizzaForm.states[i].selected)
                msg += (i==0?"":",")+document.PizzaForm.states[i].value;
        alert(msg);
        return true;
    }
    function validateText()
    {
        var pass=true;
        var fields=["customer", "address", "city", "state", "zip", "phone"];
        var fieldNames=["your name", "an address", "a city", "a state", "a zip code", "a phone number"]; /* MD this groups all the item headings */
        for(i=0;i<fields.length;i++) /* MD this is the alert button for missing items */
            if(document.PizzaForm[ fields[i] ].value.length == 0){
                alert("Please enter " + fieldNames[i] + ".");
                pass=false;
            }
        var email = document.PizzaForm["email"].value;/* MD This validates the email address */
        atpos = email.indexOf("@"); dotpos = email.lastIndexOf(".");
        if (atpos < 1 || ( dotpos - atpos < 2 )){alert("Please enter an email address.");pass=false;}
        return pass;
    }

    function validateZipCode()
    {
        var zipDigit = document.PizzaForm.zip.value;
        if(zipDigit != "") {
            /* MD this is the regular expression for zip code patterns */
            var regx = /^\d{5}$/;

            if(regx.test(zipDigit) == false) {    /* MD This is used if number does not match with the pattern */
                alert("Please enter a 5 digit zip code.");
                return false;
            }
            return true;
        }
    }

    function validatePhoneNumber()
    {
        var phoneNum = document.PizzaForm.phone.value;
        if(phoneNum != "") {
            /* MD this is th regular expression for phone number patterns */
            var regx = /(^\d{3}\-\d{3}\-\d{4}$)|(^\d{10}$)|(^\(\d{3}\)\d{7}$)|(^\(\d{3}\)\d{3}\-\d{4}$)/g;

            if(regx.test(phoneNum) == false) {    /* MD This is used if number does not match with the pattern */
                alert("Please enter valid Phone number." + "\n\n" +
                    "For example : " + "\n" +
                    "012-345-6789 " + "\n" +
                    "0123456789 " + "\n" +
                    "(012)3456789 " + "\n" +
                    "(012)345-6789"
                );
                return false;
            }
            return true;
        }
    }

    function validateRadio()
    {
        for(i=0;i<document.PizzaForm.sizes.length;i++)/* MD This validates the pizza size radio buttons */
            if(document.PizzaForm.sizes[i].checked)
                return true;
        alert("Please choose a pizza size.");
        return false;
    }

    function validateCheck()
    {
        for(i=0;i<document.PizzaForm.toppings.length;i++)/* MD This validates the pizza toppings check boxes */
            if(document.PizzaForm.toppings[i].checked)
                return true;
        alert("Please pick a topping of your choice.");
        return false;
    }

    </script>
    </head>

    <body>
    <form name="PizzaForm">
    <h1>The JavaScript Pizza Parlor</h1>
    <p>
    <h4>Step 1: Enter your name, address, and phone number:</h4>
    <font face ="Courier New">
    Name: &nbsp;&nbsp;&nbsp;<input name="customer" size="50" type="text"><br>
    Address: <input name="address" size="50" type="text"><br>
    City: &nbsp;&nbsp;&nbsp;<input name="city" size="15" type="text">
    State: <select name="states"> <!-- MD State drop down -->
    <option value="PA">PA</option>
    <option value="NJ">NJ</option>
    <option value="NY">NY</option>
    <option value="DE">DE</option>
    </select>
    Zip: <input name="zip" size="5" type="text"><br>
    Phone: &nbsp;&nbsp;<input name="phone" size="50" type="text"><br>
    Email: &nbsp;&nbsp;<input name="email" size="40" type="text"><br>
    </font>
    </p>
    <p>
    <h4>Step 2: Select the size of pizza you want:</h4>
    <font face="Courier New">
    <input name="sizes" type="radio" value="Small">Small
    <input name="sizes" type="radio" value="Medium">Medium
    <input name="sizes" type="radio" value="Large">Large
    <input name="sizes" type="radio" value="Jumbo">Jumbo<br>
    </font>
    </p>
    <p>
    <h4>Step 3: Select the pizza toppings you want:</h4>
    <font face="Courier New">
    <input name="toppings" type="checkbox" value="Pepperoni">Pepperoni
    <input name="toppings" type="checkbox" value="Canadian Bacon">Canadian Bacon
    <input name="toppings" type="checkbox" value="Sausage">Sausage<br>
    <input name="toppings" type="checkbox" value="Mushrooms">Mushrooms
    <input name="toppings" type="checkbox" value="Pineapple">Pineapple
    <input name="toppings" type="checkbox" value="Black Olives">Black Olives<br>
    <input name="toppings" type="checkbox" value="Green Peppers">Green Peppers
    <input name="toppings" type="checkbox" value="Extra Cheese">Extra Cheese
    <input name="toppings" type="checkbox" value="None">None<br>
    </font>
    </p>
    <input type="button" value="Submit Order" onClick="doSubmit()">
    <input type="reset" value="Clear Entries"> <!-- MD This clears the entries -->
    </form>
    </body>

    </html>

回答1:

I ended up adding the following code for the Uppercase and Lowercase issue.

document.PizzaForm.customer.value = document.PizzaForm.customer.value.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});

For the state drop down I created the following

var i = document.PizzaForm.state.options.selectedIndex;
var text = document.PizzaForm.state.options[i].text;
var value = document.PizzaForm.state.options[i].value;