@sardor93
айти это моё всё

Как в Javascript определить что в инпут был введен именно вопрос?

Такая функция определения вопроса уже есть в тостере. Если вопрос без "?" то появляется такая надпись "Переформулируйте вопрос так, чтобы он заканчивался знаком вопроса". Я это сделал, теперь хотелось бы выяснить есть ли в тексте вопроса определенные слова например "как" "что" "почему" итд.

<input type="text" onBlur="inputValidate()" id="title">>


function inputValidate(){

var val = document.getElementById("title");
var keyWords = ["кто","что","почему","для чего","зачем"];
  
 for (var i = 0; i < keyWords.length; i++){ 
  if(val.value.indexOf(keyWords[i]) > -1){
    document.getElementById("error2").innerHTML = " ";
      return;
  }
  else {
    document.getElementById("error2").innerHTML = "Переформулируйте вопрос"; 
  }
     console.log(val.value, keyWords[i], val.value.indexOf(keyWords[i]))
 }


}


... но почему то код не работает. Проблема в том что предупреждение то выходит то нет
  • Вопрос задан
  • 1169 просмотров
Пригласить эксперта
Ответы на вопрос 4
Много деталей. Смотреть надо на рабочем примере. Смотреть надо в консоль разработчика и ориентироваться по ошибкам. Наиболее вероятно, что функция определена где-то в замкнутой области видимости, и ее просто не видно. Скажем, если у вас оно висит в onload. Если же ни во что не обернут, и скрипт правильно подключен, то должно работать: jsfiddle.net/324m8p1g/1
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Вы не указали, что именно у вас не работает.
Разве что, проверка регистрозависимая. Отвязать от регистра можно так.
Ответ написан
Комментировать
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Главная ошибка - у вас во время перебора, после каждой проверки будет вылезать "Переформулируйте", если слова в тексте нет. Т.е, если в поле есть слово "зачем", ошибку выдаст 4 раза, прежде чем перебор дойдет до него.

Кстати говоря, если в тексте будет слово "никто", то "Кто" тоже будет найдено. В "Что-то" найдет "Что". И т.п. Проверки на подобные вещи так просто не пишутся :)

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

function inputValidate(){

var val = document.getElementById("title").value.toLowerCase(),
keyWords = ["кто","что","почему","для чего","зачем", "почем", "где", "чего", "когда"]; //И еще куча всего
  
 for (var i = 0; i < keyWords.length; i++){ 
    if(~val.indexOf(keyWords[i])){
      return document.getElementById("error2").innerHTML = " ";
    }
 }
 document.getElementById("error2").innerHTML = "Переформулируйте вопрос"; 
}


UPD: jsfiddle.net/z0gzfoo3
Ответ написан
@sysprg_46
keyWords = "кто,что,почему,для чего,зачем, почем, где, чего, когда"; //И еще куча всего
if ( keyWords.indexOf( val.toLowerCase() ) > - 1 )....
быстрее будет, чем крутить цикл по ключевым словам
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы