1

私は JavaScript の初心者で、オンラインのホーム チュートリアルで自己学習しています。私の Javascript チュートリアルでは、基本的なフォーム コードを試すように求められます。

しかし、関数checkRadio()はエラーメッセージを投稿していません!(ラジオボタンがチェックされていない場合-エラーメッセージを投稿します)

関数 checkEmail()は、エラー メッセージを正しく送信します。

構文を何度もチェックしました。エラーを見つけてください。

ありがとうございました

<!DOCTYPE HTML>
<HTML>
    <HEAD>
        <TITLE>Javascript and Forms</TITLE>

        <SCRIPT LANGUAGE = "Javascript">

        function validate() {

            var emailError = checkEmail();
            var radioError = checkRadio();
            var dropdownError = checkDropdown();
            var checkboxError = checkCheckbox();

        }




        function checkEmail(){

            var email = document.frmOne.email.value;
            if(email==""){
                document.getElementById("email_error").innerHTML = "No Email Adress";
                return false;
            }
            else{
                document.getElementById("email_error").innerHTML = "";
                return true;
            }




        }

        function checkRadio(){

            var payment = "";
            var len = document.frmone.payment.length;
            var i;

            for(i = 0;i<len;i++){
                if (document.frmone.payment[i].checked){
                    payment = document.frmone.payment[i].value;
                    break;
                }
            }
            if(payment == ""){
                document.getElementById("radio_error").innerHTML = "No payment Option Selected";
                return false;
            }
            else{
                document.getElementById("radio_error").innerHTML = "";
                return true;
            }
        }







        </SCRIPT>
    </HEAD>

    <BODY>

        <FORM NAME="frmOne" ACTION="" METHOD="POST">

        <P>
            EMAIL: <INPUT TYPE="text" NAME="email" VALUE="" PLACEHOLDER="Email Address"> 
            <SPAN STYLE=color:red ID="email_error"></SPAN>
        </P>

        <P>
            Payment Options:
            <INPUT TYPE="Radio" Name="payment" Value="CC">Credit Card
            <INPUT TYPE="Radio" Name="payment" Value="DC">Debit Card
            <INPUT TYPE="Radio" Name="payment" Value="PP">PayPal 
            <SPAN STYLE=color:red ID="radio_error"></SPAN>
        </P>

        <P>
        Where did you hear about us?
        <SELECT NAME="hear">
            <OPTION Value="None">None</OPTION>
            <OPTION Value="paper">Newspaper</OPTION>
            <OPTION Value="tv">Television</OPTION>
            <OPTION Value="mouth">Word of Mouth</OPTION>
            <OPTION Value="seach">Search Engine</OPTION>
        </SELECT>
         <SPAN STYLE=color:red ID="dropdown_error"></SPAN>
        </P>

        <P>
            <LABEL FOR="CB1">Terms and Conditions</LABEL>
            <INPUT TYPE="Checkbox" Name="terms" ID="CB1" Value="TAC">
            <SPAN STYLE=color:red ID="checkbox_error"></SPAN>
        </P>

        <P>&nbsp;</P>
        <INPUT TYPE="button" VALUE="  SUBMIT  " onClick="validate()">
        </FORM>

    </BODY>
</HTML>
4

2 に答える 2

1

この行の大文字を見逃しました:

len = document.frmone.payment.length;

する必要がありますlen = document.frmOne.payment.length;

ブラウザのWebインスペクタの使用方法を学ぶ必要があります。これは、このようなものを簡単に見つけるのに役立ちます。

于 2013-01-18T14:20:03.750 に答える
1

frmoneに変更する必要がある場所が 3 つありますfrmOne。1つはマルコさんの指摘通りです。

if (document.frmOne.payment[i].checked){
                    payment = document.frmOne.payment[i].value;
                    break;
                }
于 2013-01-18T14:37:05.620 に答える