2016-09-22 3 views
-1

Я знаю, что существует много похожих тем в строке темы, поэтому я сразу пойду, чтобы прояснить мою проблему. У меня есть простая форма, в которой я проверяю, в которой тестирование для пустых полей выполняется отлично, и после нескольких других сообщений в форуме попытались выполнить тесты для ввода цифр или букв, но функции просто не будут работать.JavaScript - подтверждение только для числового/алфавитного текста

Вот отрывок из моей функции рабочего NotEmpty:

function validateNotEmpty(input, id) 
    { 

     var errorDisplay = document.getElementById(id); 
     var notEmpty; 
     if (input == "") // check if input is empty 
     { 
      errorDisplay.innerHTML = "This is a requiered field"; 
      notEmpty = false; // update return value 
     } // end if 
     else 
     { 
      errorDisplay.innerHTML = ""; // clear the error area 
      notEmpty = true; // update return value 
     } // end else 

     return notEmpty; // return whether the input is empty 

    }// end function validateNotEmpty 

И следующие мои два (не работают цифровые/алфавитные тестеры):

function validateNotNumber(input, id) 
    { 
      var errorDisplay = document.getElementById(id); 
      var notNumber; 

      for (var i=0;i<input.value.length;i++){ 
      temp=input.value.substring(i,i+1); 
       console.log(temp); 
      if (digits.indexOf(temp)==-1){ 
       errorDisplay.innerHTML = "Sorry, this section can not have numbers"; 
       notNumber = false; 
       } 
      else 
      { 
       errorDisplay.innerHTML = ""; // clear the error area 
       notEmpty = true; // update return value 
      } // end else 
     } 
     return notNumber; 
    } 



function validateNotLetter(input, id) 
      { 
       var errorDisplay = document.getElementById(id); 
       var notLetter; 

       for (var i=0;i<input.value.length;i++){ 
       temp=input.value.substring(i,i+1); 
        console.log(temp); 
       if (alphabets.indexOf(temp)==-1){ 
        errorDisplay.innerHTML = "Sorry, this section can not have letter"; 
        notLetter = false; 
        } 
       else 
       { 
        errorDisplay.innerHTML = ""; // clear the error area 
        notLetter = true; // update return value 
       } // end else 
      } 
      return notLetter; 
     } 

Помимо этого, это как я называю функции javascript из своей формы:

<td width="135" valign="top"> 
          <input size="15" type="text" name="Full_Name" value="" onblur = "validateNotNumber(this.value, 'nameError')"/> 
         <p> <span id = "nameError" class = "errorMessage"></span> </p> 
</td> 

Спасибо за любую помощь/указатели, stil Я довольно новичок в JavaScript, поэтому обертывание головы вокруг проверки было довольно сложным.

+0

регулярное выражение упростит ваш код. Если вы потратите некоторое время и очистите свой пост и создадите простой пример кода, мы поможем. – Nix

+0

проблема в вашей функции validateNotNumber во время цикла вы используете input.value.length, а используете только input.length, то же самое относится и к этой строке temp = input.value.substring (i, i + 1); плюс вы используете цифры, которые не определены. –

ответ

1

Fiddle, чтобы помочь вам начать.

Я обновил его в основном делать то, что вы хотите, но использовать регулярные выражения для обнаружения цифр, букв и т.д.

образец одного из них:

function validateNotLetter(input, id) { 
    var errorDisplay = document.getElementById(id); 

    var value = input || ''; 

    var letterRegex = /\D+/i; 
    var hasALetter = letterRegex.test(value); 
    if(hasALetter){ 
    errorDisplay.innerHTML = "Sorry, this section can not have letter";; 
    }else{ 
    errorDisplay.innerHTML = ""; 
    } 

    return notLetter; 
} 

Regex являются мощными. Тонны ресурсов онлайн:

  1. https://regex101.com/ - место, чтобы проверить регулярное выражение в

  2. https://regexone.com/ - место, чтобы узнать

1

Это сложный путь. Вы должны определенно попробовать некоторое регулярное выражение, например.

var alphanumeric = "someStringHere"; 
 
    var myRegEx = /[^a-z\d]/i; 
 
    var isValid = !(myRegEx.test(alphanumeric)); 
 
    console.log(isValid);

или функции:

function isValid(str) { 
    var myRegEx = /[^a-z\d]/i; 
    return !(myRegEx.test(str)); 
} 
Смежные вопросы