Форма не вызывает событие отправки javascript - PullRequest
0 голосов
/ 26 марта 2012

Я создал страницу «регистрации» на моем сайте, но, похоже, функция проверки javascript не вызывается при запуске события «onsubmit». Я уже читал сообщения на этом сайте, посвященные аналогичной проблеме, но, похоже, их проблема заключается в том, что они забыли вернуть логическое значение, указывающее, что нужно идти вперед и выполнять действие. Обратите внимание, что эта страница «включена» на другой странице с помощью функции php «include».

<script type="text/javascript">
    function validateForm()  {
        //alert();
        var display = document.getElementById('error');
        var usernameValue = document.getElementById('username').value;
        var passwordValue = document.getElementById('password').value;
        var rptPasswordValue = document.getElementById('rptPassword').value;
        var emailValue = document.getElementById('email').value;
        var aliasValue = document.getElementById('alias').value;

        if (usernameValue != '' && passwordValue != '' && rptPasswordValue != '' && emailValue != '' && aliasValue != '')  {
            if (passwordValue == rptPasswordValue)  {
                if (usernameValue.length > 32 || aliasValue.length > 32)  {
                    displayError("Username or password is too long (Both fields must contain 32 characters or less)");
                } else {
                    if (passwordValue.length > 32 || passwordValue.length < 4)  {
                        displayError("Password must be between 4 and 32 characters in length.");
                    } else {
                        if (emailValue.indexOf('@') == -1 || emailValue.length > 64 || emailValue.length < 6)  {
                            displayError("Please make sure you have entered a valid email. (Emails must be between 6 and 64 characters in length)");
                        } else {
                            if (aliasValue < 3 || aliasValue > 32)  {
                                displayError("Your alias must be between 3 and 32 characters in length.");
                            } else {
                                return true;
                            }
                        }
                    }
                }
            } else {
                displayError("Please make sure both passwords match.");
            }
        } else {
            displayError("Please make sure each field contains a value.");
        }

        return false;
    }

    function displayError(var msg)  {
        document.getElementById('error').innerHTML = msg;
    }
</script>
<h1>Sign Up</h1>
<p>All fields must be filled out in order for an account to be created.</p>
<form onsubmit="return validateForm();" action="register.php" method="post">
    <table>
        <tr>
            <td>
                <p class="txtLabel">Username:</p>
            </td>
            <td>
                <input type="text" class="defaultTxt" tabindex="0"  id="username" name='username'>
            </td>
            <td>
                <p class="txtLabel">Email Address:</p>
            </td>
            <td>
                <input type="text" class="defaultTxt" tabindex="1"  id="email" name='email'>
            </td>
        </tr>
        <tr>
            <td>
                <p class="txtLabel">Password:</p>
            </td>
            <td>
                <input type="password" class="defaultTxt" tabindex="2"  id="password" name='password'>
            </td>
        </tr>
        <tr>
            <td>
                <p class="txtLabel">Repeat Password:</p>
            </td>
            <td>
                <input type="password" class="defaultTxt" tabindex="2"  id="rptPassword" name='rptPassword'>
            </td>
        </tr>
        <tr>
            <td>
                <p class="txtLabel">Nickname/Alias:</p>
            </td>
            <td>
                <input type="text" class="defaultTxt" tabindex="4"  id="alias" name='alias'>
            </td>
        </tr>
    </table>
    <p><b id='error' style='color: red'></b></p><br />
    <input type="submit" value='' name='submit' class="submitBtn">
</form>

Обратите внимание, что в функции validateForm предупреждение использовалось для проверки, была ли функция вызвана вообще, это не так.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 26 марта 2012
function displayError(var msg)  {
        document.getElementById('error').innerHTML = msg;
    }

Замените его на

function displayError(msg)  {
        document.getElementById('error').innerHTML = msg;
    }

В вашей функции java-script вы не можете писать как function displayError(var msg).

Удачи.

0 голосов
/ 26 марта 2012

Ошибка в вашем JavaScript здесь:

function displayError(var msg)  {
                      ^^^
     document.getElementById('error').innerHTML = msg;
}

Вам не нужно ключевое слово var в параметрах метода.

...