1

送信された入力を取得し、それを使用して選択内容に基づいてアラートを送信するスクリプトを作成しようとしていますが、これを行うたびに対応していないようです。

答えはありますか?

Javascript:

<script language="Javascript" type="text/javascript">
    function checkForm() {
        alert(form.option.value);
        if (form.option.value == "one") {
            alert("Test 1");
        } else if (form.option.value == "two") {
            alert("Test 2");
        } else {
            alert("Test 3");
        }
    }
</script>

HTML:

<form onsubmit="checkForm()">
    <select>
        <option value="one">One</option>
        <option value="two">Two</option>
        <option value="three">Three</option>
    </select>
    <input type="submit" name="option">
</form>
4

2 に答える 2

1

現在のコードが機能していないため、メソッドでエラーが発生します。

Uncaught ReferenceError: form is not defined

正しい要素へのハンドルを取得する必要があります。form存在するだけでoption.valueはなく、正しくもありません。

以下に示すように、関連する要素を取得します。

<script language="Javascript" type="text/javascript">
    function checkForm() {
        var form = document.forms[0];
        var selectElement = form.querySelector('select');
        var selectedValue = selectElement.value;

        alert(selectedValue);
        if (selectedValue == "one") {
            alert("Test 1");
        } else if (selectedValue == "two") {
            alert("Test 2");
        } else {
            alert("Test 3");
        }
    }
</script>

デモ


完全を期すために、別の回答で既に述べたように、ある時点で送信を防止したい場合は、フォームタグを更新して、関連する場所、つまりアラートの1つの後にメソッドをonsubmit="return checkForm()"追加return false;します。checkForm()

于 2013-02-28T23:22:16.960 に答える
0

onsubmit="checkForm()"に変更onsubmit="return checkForm()"

falseそして、その関数から戻ることから始めます。これにより、ページの更新が妨げられます。

PS:関数の先頭に追加debuggerして、ブラウザーにあるデバッガーをトリガーします。

于 2013-02-28T23:21:07.010 に答える