0

チェックボックスの検証が機能しません。エラーは発生しません。修正するのを手伝ってくれませんか?また、エラーを 1 つずつではなく、1 つのアラートにまとめるにはどうすればよいでしょうか?

助けてくれてありがとう。

HTML コード:

<form class="contact_form" action="" method="post" name="contact_form" onsubmit="returnonFormSubmit(this)">
<li>
<label for="First Name">First Name:</label>
<input type="text" name="visitor_name" /><br />
</li>

<li>
<label for="condition">I agree with the terms and conditions.</label>
<input type="checkbox" name="lan" /><br />
</li>

<li>
              <label for="Male">Male:</label>
          <input type="radio" name="gender" value="m" /> &nbsp; Female:<input type="radio" name="gender" value="f" /><br />
              </li>
              <li>
              <label for="National Rating">National Rating:</label>
              <select name="make">
              <option selected>-- SELECT --</option>
              <option> Below 1200 </option>
              <option> 1200 - 1500 </option>
              <option> 1500 - 1800 </option>
              <option> 1800 - 2100 </option>
              <option> Above 2100 </option>
              </select><br />
              </li>

<li>
<button class="submit" type="submit">Submit</button>
</li>
     <div id="error_message" style="color:#ff0000;"></div>

JavaScript コード:

    function onFormSubmit(form_element)
{
    var checked = 0;
    var letters = /^[a-zA-Z]+$/;

if (form_element.visitor_name.value.match(letters))
    {
            true;
            }
    else
            {
    alert("Please enter a valid first name. For example; John.");
    false;
    }
        if (form_element.lan.checked == false)
            {
            alert("Please accept the terms and conditions");
            false;
            }
if (form_element.gender[0].checked == false && form_element.gender[1].checked == false)
    {
    alert("Please select a gender.");
    false;
    }
    if (form_element.make.selectedIndex == 0)
            {
            alert("Please select your rating interval.");
            form_element.make.focus();
            false;
            }
    return true;
}
4

3 に答える 3

1

にタイプミスがありonsubmit="returnonFormSubmit(this)"ます。そのはず

onsubmit="return onFormSubmit(this)"

コンソールを開いた状態でこれを実行すると、貴重なエラー/警告が表示されます。Chromeの開発者ツール、FirefoxのFirebugなどをお試しください。

エラーを1つにまとめるには、空の文字列から始めてmsg = ''、エラーがある場合はそれに追加します。次に、関数の下部で、alert(msg)空でない場合はfalseを返し、そうでない場合はtrueを返します。

于 2012-04-22T14:09:24.313 に答える
1

returnonFormSubmit(this)でタイプミスを修正した後、ChromeとFirefoxで機能します。

(ところで:あなたはリターンを忘れます)

アラートを組み合わせるには、配列を使用します。例:

function onFormSubmit(form_element)
{
    var checked = 0;
    var letters = /^[a-zA-Z]+$/;

    var alerts = new Array();

    if (!form_element.visitor_name.value.match(letters))
        alerts.push("Please enter a valid first name. For example; John.");

    if (!form_element.lan.checked)
        alerts.push("Please accept the terms and conditions");

    if (alerts.length == 0) {
        return true;
    }

    alert(alerts.join("\n"));

    return false;
}
于 2012-04-22T14:22:03.693 に答える
1

エラー メッセージを変数に連結する必要があります。

function onFormSubmit(form_element)
{
    var checked = 0;
    var letters = /^[a-zA-Z]+$/;
    var errorMessage = "";
    if (!form_element.visitor_name.value.match(letters))
    {
        errorMessage += "Please enter a valid first name. For example; John.\n";
    }
    if (form_element.lan.checked == false)
    {
        errorMessage += "Please accept the terms and conditions\n";
    }
    if (errorMessage != "")
    {
       alert(errorMessage);
       return false;        
    }
    return true;
}​
于 2012-04-22T14:14:23.323 に答える