1

重複の可能性:
JavaScriptで必須フィールドが空白でないことを確認したい

私はこれを以前に投稿しましたが、どのソリューションも機能しませんでした。私はアドバイスのいくつかを使用したので、おそらくもっと近くにいます。ユーザーが送信すると、必須フィールドに入力しなくても次のページに進みます。必須フィールドが空白の場合は進まないようにしたいと思います。これを実現するには、コードをどのように変更する必要がありますか?

    <script type="text/javascript">
    function insert() {
        if (window.XMLHttpRequest) {
            xmlhttp = new XLMHttpRequest();
        } else {
            xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        }

        cn1 = 'child_name'+document.getElementById('child_name').value;
        ag2 = 'age'+document.getElementById('age').value;
        hm3 = 'hometown'+document.getElementById('hometown').value;
        bg4 = 'boy_girl'+document.getElementById('boy_girl').value;
        fn5 = 'first_name'+document.getElementById('first_name').value;
        ln6 = 'last_name'+document.getElementById('last_name').value;
        email = 'email'+document.getElementById('email').value;
        ad8 = 'address1'+document.getElementById('address1').value;
        ad9 = 'address2'+document.getElementById('address2').value;
        ct10 = 'city'+document.getElementById('city').value;
        st11 = 'state'+document.getElementById('state').value;
        zp12 = 'zip'+document.getElementById('zip').value;

        var flagInvalid = false;
        var tempArray = document.getElementsByClassName("required");
        for (var i = 0; i < tempArray.length; i++)
        {
            if (tempArray[i].value == ""){
                flagInvalid = true;
                break;
            }
        }

        if (flagInvalid == false) {
        xmlhttp.open('POST', 'payment.php', true);
        xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xmlhttp.send(cn1&ag2&hm3&bg4&fn5&ln6&email$ad8&ad9&ct10&st11&zp12);

        } else {
            alert ("Please enter all required fields.");
        }

    }
</script>
4

2 に答える 2

1

このフィドルを参照してください。あなたのロジックはうまくいくようです。ページで何か他のことが起こっていますか?

flagInvalid常に「偽」が出てくるだけですか?そして、ajax呼び出しは常に行われますか?

編集:別の考えがありました。insert()から関数を実行していbuttonますか? またはアンカータグ。buttonこのようなフィドルを使用していて、ボタンが 内にあるform場合、関数は実行されますが、すぐinsert()に送信され、ページが別の場所に移動しているように見える場合があります。form

于 2012-10-19T17:18:59.690 に答える
0

この行で厳密な比較演算子を使用してみてください。

if (tempArray[i].value === ""){
于 2012-10-19T17:23:08.083 に答える