Проверете за специални знаци (, ; .), докато валидирате формуляр с JavaScript [затворено]

Опитах се да вмъкна тази част от кода (която бях намерил на уебсайт) в моя (работещ) скрипт за валидиране:

if (register.username.match(/\W/)) {
    alert('You have special characters on username field.');
    return false;
}

Не направи нищо и също така попречи на целия скрипт да работи.

Това е html формата (не цялата):

<form name="register" method="POST" action="registar.php" onsubmit="return validateForm();">
    <ul class="left-form">
        <h2>Nova conta:</h2>
        <li>
            <input type="text" name="username" placeholder="Username" required/>
            <div class="clear"> </div>
        </li>
        <li>
            <input type="text" name="email" placeholder="Email" required/>
            <div class="clear"> </div>
        </li>
        <li>
            <input type="password" name="pass" placeholder="Password" required/>
            <div class="clear"> </div>
        </li>
        <li>
            <input type="password" name="pass_confirm" placeholder="Confirmar a password" required/>
            <div class="clear"> </div>
        </li>
        <input type="submit" value="Registar">
        <div class="clear"> </div>
    </ul>
</form>

И това е моят Javascript код (без проверка на специалните знаци):

function validateForm() {
    if (register.username.value.length <= 2) {
        alert("O username escolhido é demasiado curto.");
        return false;
    }
    if (register.username.value.length > 20) {
        alert("O username escolhido é demasiado longo.");
        return false;
    }
    var x = register.email.value;
    var atpos = x.indexOf("@");
    var dotpos = x.lastIndexOf(".");
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
        alert("O email inserido parece ser inválido.");
        return false;
    }
    if (register.username.value == register.pass.value) {
        alert("Por questões de segurança, pedimos que use uma password diferente do seu nome de utilizador.");
        return false;
    }
    if ((register.pass.value.length < 6) || (register.pass.value.length > 20)) {
        alert("Certifique-se que a sua password tem entre 6 e 20 letras.");
        return false;
    }
    if (register.pass.value != register.pass_confirm.value) {
        alert("As passwords não condizem.");
        return false;
    }
    return true;
}

Игнорирайте предупрежденията, тъй като те са само съобщенията на дисплея.

Може ли някой да напише част от кода, който проверява за специални знаци (!, . + * и т.н.) или да ми каже какво не е наред с кода, който използвах?


person Bruno Dayz    schedule 21.01.2015    source източник
comment
Моля, покажете HTML на полето за формуляр и име.   -  person Niet the Dark Absol    schedule 21.01.2015
comment
И какво, ако името ми съдържа тези знаци? ==›   -  person T.J. Crowder    schedule 21.01.2015
comment
Самото хващане на случаен скрипт, който намирате на уебсайт, и прилагането му към вашия код, без да разбирате какво прави, не е успешен път към съвършенство в разработката. Прекарайте известно време в изучаване на езика и средата, в която работите, и ще можете да правите подобни промени в съня си. В този случай вероятно търсите регулярни изрази .   -  person T.J. Crowder    schedule 21.01.2015
comment
@T.J.Crowder благодаря ти за тази страница! Със сигурност ще го прочета и проуча.   -  person Bruno Dayz    schedule 21.01.2015
comment
Имайте предвид, че съм студент и всичко това е ново за мен. Ето защо дойдох да потърся помощ и насоки на този уебсайт, тъй като повечето от въпросите ми получиха отговор тук   -  person Bruno Dayz    schedule 21.01.2015
comment
възможен дубликат на проверка на специални знаци чрез JavaScript   -  person Farid Nouri Neshat    schedule 21.01.2015


Отговори (1)


Вероятно трябва да промените кода на това:

if (register.username.value.match(/\W/)) {
   alert('You have special characters on username field.');
   return false;
}

Каква е разликата? Е, ако сте разбрали, че добавих .value в средата. Тъй като register.username ще се отнася до елемента за въвеждане на потребителско име и няма метод match. Трябва да проверим въведения текст в него. Като проверите препратката към входния елемент, можете да разберете, че използваме това е value свойство, което връща въведения текст. Така че register.username.value е текстът, въведен от потребителя, и тъй като това е низ, можем да използваме .match метод върху него.

Вече можете да подадете всеки регулярен израз към метода за съвпадение, който би задоволил вашите нужди. Проверете също ръководството за regex.

Също така винаги проверявайте за грешки, показани в конзолата за програмисти.

person Farid Nouri Neshat    schedule 21.01.2015
comment
Благодаря ти! Беше голям провал от моя страна да не забележа липсващото .value, честно казано. - person Bruno Dayz; 21.01.2015