我如何将此表单上的单选按钮固定为仅允许一个选择并确认

问题描述 投票:0回答:1

我一直在研究如何使用JavaScript进行验证的简单表格。我了解,通常单选按钮用于允许从一组选项中进行一个选择(例如,性别选择,M或F)的表单元素,并且该复选框允许从一组选项中进行多个选择(例如,页面顶部的浇头)比萨)。测试表单后,我发现该表单允许用户检查两个单选按钮的“性别”,并且仍然可以验证。经过一些研究,我注意到我需要在html文件中为每个单选按钮赋予相同的名称,但是,这样做之后,该表单将不再有效。我不确定本教程的作者为什么使用他们使用的方法,但是如果有一种方法可以挽救这个项目,我想尝试一下。我也查看了单选按钮列表和没有运气的单选组。任何建议或意见将不胜感激。我将包括一些必要的代码。

HTML

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<title>Test Form</title>
<link rel='stylesheet' href='css/styles.css' type='text/css' />
<script src="js/script.js"></script>
</head>

<body onload="document.registration.userid.focus();">
<!--places cursor in first field onload-->
    <div class="wrapper"> <img src="images/logo.jpg" alt="Banner">
        <br>
        <h1>New Patient Information</h1>
    <div id="left">
        <!--form-->
        <form name='registration' onSubmit="return formValidation();">
            <ul>
                <!--PatientID#-->
                <li>
                    <label for="userid">Patient ID:</label>
                </li>
                <li>
                    <input type="text" name="userid" size="12" />
                </li>
                <!--Password-->
                <li>
                    <label for="passid">Password:</label>
                </li>
                <li>
                    <input type="password" name="passid" size="12" />
                </li>
                <!--Full Name-->
                <li>
                    <label for="username">Full Name:</label>
                </li>
                <li>
                    <input type="text" name="username" size="50" />
                </li>
                <!--Address-->
                <li>
                    <label for="address">Delivery Address:</label>
                </li>
                <li>
                    <input type="text" name="address" size="50" />
                </li>
                <!--County-->
                <li>
                    <label for="country">Select County:</label>
                </li>
                <li>
                    <select name="country">
                        <option selected="" value="Default">(Please select your county)</option>
                        <option value="AF">Orange</option>
                        <option value="AL">Seminole</option>
                        <option value="DZ">Palm Beach</option>
                        <option value="AS">Martin</option>
                        <option value="AD">Dade</option>
                    </select>
                </li>
                <!--Zip Code-->
                <li>
                    <label for="zip">ZIP Code:</label>
                </li>
                <li>
                    <input type="text" name="zip" />
                </li>
                <!--Email Address-->
                <li>
                    <label for="email">Email:</label>
                </li>
                <li>
                    <input type="text" name="email" size="50" />
                </li>





                <!--Patient Gender-->
                <li>
                    <label id="gender">Gender:</label>
                </li>
                <li>
                    <input type="radio" name="msex" value="Male" /><span>Male</span></li>
                <li>
                    <input type="radio" name="fsex" value="Female" /><span>Female</span></li>





                <!--language-->
                <li>
                    <label>Language:</label>
                </li>
                <li>
                    <input type="checkbox" name="en" value="en"/><span>English</span></li>
                <li>
                    <input type="checkbox" name="nonen" value="noen"/><span>Non English</span></li>
                <!--About *Optional*-->
                <li>
                    <label for="desc">About:</label>
                </li>
                <li>
                    <textarea name="desc" id="desc"></textarea>
                </li>
                <!--Submit Button-->
                <li>
                    <input type="submit" name="submit" value="Submit" />
                </li>
            </ul>
        </form>
    </div>
</div>
<!--JS-Call-->
<script src="js/script.js"></script>

JavaScript

    //JavaScript
  function formValidation() {
var uid = document.registration.userid;
var passid = document.registration.passid;
var uname = document.registration.username;
var uadd = document.registration.address;
var ucountry = document.registration.country;
var uzip = document.registration.zip;
var uemail = document.registration.email;


//GENDER


var umsex = document.registration.msex;
var ufsex = document.registration.fsex;


//END-Gender


if (userid_validation(uid, 7, 18)) {
    if (passid_validation(passid, 7, 18)) {
        if (allLetter(uname)) {
            if (alphanumeric(uadd)) {
                if (countryselect(ucountry)) {
                    if (allnumeric(uzip)) {
                        if (ValidateEmail(uemail)) {


                            //Gender


                            if (validsex(umsex, ufsex)) {


                                //End Gender


                            }
                        }
                    }
                }
            }
        }
    }
}
return false;
}

function userid_validation(uid, mx, my) {
var uid_len = uid.value.length;
if (uid_len == 0 || uid_len >= my || uid_len < mx) {
    alert("User Id should not be empty / length be between " + mx + " to " + my);
    uid.focus();
    return false;
}
return true;
}

function passid_validation(passid, mx, my) {
var passid_len = passid.value.length;
if (passid_len == 0 || passid_len >= my || passid_len < mx) {
    alert("Password should not be empty / length be between " + mx + " to " + my);
    passid.focus();
    return false;
}
return true;
}

function allLetter(uname) {
var letters = /^[a-zA-Z\s]*$/;
if (uname.value.match(letters)) {
    return true;
} else {
    alert('Username must have alphabet characters only');
    uname.focus();
    return false;
}
}

function alphanumeric(uadd) {
var letters = /^[a-z\d\-_\s]+$/i;
if (uadd.value.match(letters)) {
    return true;
} else {
    alert('User address must have alphanumeric characters only');
    uadd.focus();
    return false;
}
}

function countryselect(ucountry) {
if (ucountry.value == "Default") {
    alert('Select your county from the list');
    ucountry.focus();
    return false;
} else {
    return true;
}
}

function allnumeric(uzip) {
var numbers = /^[0-9]+$/;
if (uzip.value.match(numbers)) {
    return true;
} else {
    alert('ZIP code must have numeric characters only');
    uzip.focus();
    return false;
}
}

function ValidateEmail(uemail) {
var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if (uemail.value.match(mailformat)) {
    return true;
} else {
    alert("You have entered an invalid email address!");
    uemail.focus();
    return false;
}
}


//Gender Function


function validsex(umsex, ufsex) {
x = 0;
if (umsex.checked) {
    x++;
}
if (ufsex.checked) {
    x++;
}
if (x == 0) {
    alert('Select Male/Female');
    umsex.focus();
    return false;
}


//Form Submit
else {
    alert('Form Succesfully Submitted');
    window.location.reload()
    return true;
}
}
javascript html forms radio-group radiobuttonlist
1个回答
0
投票

对每个单选按钮使用相同的名称。您使用fsex和msex

© www.soinside.com 2019 - 2024. All rights reserved.