2016-04-18 2 views
-1

Используйте 'getElementsByname', но это мне не помогает. Что я делаю неправильно? Функция isAllowedSymbol работает отлично, но не «checkNumbers».max length check not working

function checkNumbers(this) { 
    var element = document.getElementsByname('answer')[0]; 
    if (element != null && element.value.length == 10) { 
    element = element.replace(element, ''); 
    } 
} 

function isAllowedSymbol(input) { 
    var value = input.value; 
    var rep = /[a-zA-Z]/; 
    var rep2 = /[а-яА-Я]/; 

    if (rep.test(value)) { 
    value = value.replace(rep, ''); 
    input.value = value; 
    if (rep2.test(value)) { 
     value = value.replace(rep2, ''); 
     input.value = value; 
    } 
    } 
} 


<input type="text" maxlength="10" onkeyup="isAllowedSymbol(this);checkNumbers(this); " placeholder="Enter data" name="answer" "> <br> 

Я хочу получить по имени, а не идентификатор, в чем моя проблема? Или может быть, я могу получить его только «id»? Спасибо.

+0

'' getElementsByName не 'getElementsByname' –

+0

Вы не можете принять' «это» 'в качестве аргумента ... Сделать это' что ' – Rayon

+0

@RayonDabre С каких это пор вы можете использовать' that' в Javascript? – Jer

ответ

0

Вы не можете принять "this" в качестве аргумента причине того, что является Неожиданный токен это опечатка Также @getElementsByname. Но по мере того, как вы отправляете this из click-handler, вам это не нужно. Вы можете захватить элемент, используя любое другое имя аргумента, чем this

function checkNumbers(element) { 
 
    if (element != null && element.value.length == 10) { 
 
    element = element.replace(element, ''); 
 
    } 
 
} 
 

 
function isAllowedSymbol(input) { 
 
    var value = input.value; 
 
    var rep = /[a-zA-Z]/; 
 
    var rep2 = /[а-яА-Я]/; 
 

 
    if (rep.test(value)) { 
 
    value = value.replace(rep, ''); 
 
    input.value = value; 
 
    if (rep2.test(value)) { 
 
     value = value.replace(rep2, ''); 
 
     input.value = value; 
 
    } 
 
    } 
 
}
<input type="text" maxlength="10" onkeyup="isAllowedSymbol(this);checkNumbers(this); " placeholder="Enter data" name="answer">

0

Сначала вы ошибочно написали getElementsByname. Его собственное имя - getElementsByName. Эта функция позволяет вам извлекать элементы по их имени . Если вы хотите, чтобы выбрать input элемент, name атрибут answer, а затем использовать:

var el = document.querySelector("input[name=answer]");