2013-12-26 4 views
0

Я хочу проверить имя пользователя, используя Javascript. Я подтвердил, что имя носителя равно null. Теперь я хочу проверить, что специальные символы не принимаются, кроме пробела.Проверка для строки

<input type="text" name="medianame" id="medianame" value="" required="required">  
<a class="edit" href="" id="edit" onclick="return chk_val()">Save</a>  
<script> 
function chk_val() { 
    if (document.getElementById('medianame').value == "") { 
     alert("Please enter name"); 
     return false; 
    } 
    else { 
     return false; 
    }  
} 
</script> 
+1

Поэтому, пожалуйста, конкретно именно о том, какие символы должны быть разрешены в поле. (И терминология: вы не подтвердили значение null, вы проверили пустую строку.) – nnnnnn

+0

допускаются только символы, такие как от a до z и от A до Z и пробел. Да, я имею в виду пустую строку – jassi

ответ

0

Вы можете использовать regular expression, чтобы проверить, содержит ли строка только символы, которые вы хотите разрешить:

/^[a-z ]+$/i 

... или тест для символов, которые не разрешены:

/[^a-z ]/i 

Используйте .test() method в функции следующим образом:

function chk_val() { 
    var val = document.getElementById('medianame').value; 
    if (val === "") { 
     alert("Please enter name"); 
     return false; 
    } else if (/[^a-z ]/i.test(val)) { 
     alert("Please enter only letters or spaces"); 
     return false; 
    } 
    return true; 
} 
+0

спасибо за ответ – jassi

0
function chk_val() 
{ 
    var error = false; 
    var name = document.getElementById('medianame').value; 
    if (name == "") 
     error = true; 
    else if(/^[A-z ]+$/.test(name) == false) 
     error = true; 

    if(error) 
    { 
     alert("Please enter correct name"); 
     return false; 
    } 

    return true; 
} 
+0

Если у вас будет одно общее сообщение об ошибке (как пользователь знает, что такое «правильный»?), Вы можете удалить «name ==» «test», потому что ваш regex делает это в любом случае. – nnnnnn

+0

спасибо за ответ – jassi

0

Это проверит все возможные выражения. Вы можете отфильтровать свои потребности.

var yourExp = /^[[email protected]#\$%\^\&*\)\(+=._-]+$/g; 

Тогда вы можете соответствовать как

var yourStr = document.getElementById('medianame').value; 
if(yourStr.match(yourExp) == True){ 
    alert('Matched'); 
} 
+1

JavaScript чувствителен к регистру, поэтому вам нужно 'true', а не' True', но в любом случае метод '.match()' никогда не будет возвращать логическое значение, поэтому ... – nnnnnn

+0

спасибо за ответ – jassi

Смежные вопросы