поле ввода, запрашивающее два конкретных слова - PullRequest
0 голосов
/ 08 декабря 2018

Я новичок в этом, поэтому я надеюсь, что смогу достаточно хорошо объяснить, в чем заключается моя проблема.

У меня есть тест и для ответа я создал поле ввода.Чтобы перейти к другой ссылке, вы должны вставить туда два слова, но порядок не должен иметь значения.не имеет значения, записываете ли вы «word1 word2» или «word2 word1», должно быть только одно правило: оба слова должны быть упомянуты.Возможно ли это?

Мой код на данный момент:

        function checkText()
    {
        var textwunf_1 = document.getElementById("wunf").value;
        if(textwunf_1.toLowerCase() == "word1" && "word2"){

    window.open("URL","_self"); 

        }
    else{

    xxx 

        }
    }

Это не работает.

Прежде чем я хотел проверить только одно слово, например:

var textwunf_2 = 'word1';

    function checkText()
    {
        var textwunf_1 = document.getElementById("wunf").value;
        if(textwunf_1.toLowerCase().indexOf(textwunf_2) == -1){

    xxx

        }
    else{
            window.open("URL","_self"); 

        }
    }

Это сработало, но я не могу использовать его для двух слов, потому что, если я напишу

var textwunf_2 = 'word1 word2';

, порядок не может быть 'word2 word1' ...

Есть ли решение моей проблемы?

Надеюсь, кто-нибудь сможет понять и помочь мне, спасибо!

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

Другой подход:

var words = ["word1", "word2"];

function CheckWords() {
  var inputWords = document.getElementById("wunf").value.split(' ');
  var allWordsFound = true;
  if (inputWords.length !== words.length) { return false; }
  inputWords.forEach(function(word) {
    if (words.indexOf(word.toLowerCase()) === -1) {
       allWordsFound = false;
       return;
    }
  });
  return allWordsFound;
}

console.log(CheckWords());
0 голосов
/ 08 декабря 2018

Я создаю функцию, которая получает текст и проверяет, включены ли ответы (xx и yy), порядок не имеет значения.Список ans может содержать 1,2 или более слов, он будет работать.

let ans = ['xx','yy'];

function check(text){
  text = text.toLowerCase();
  let counter = 0;
  ans.forEach((x) => {text.includes(x) && counter++ })
  return counter === ans.length
}

console.log(check("aa bb")) // false
console.log(check("xx bb")) // false
console.log(check("aa yy")) // false
console.log(check("xx yy")) // true
console.log(check("yy xx")) // true
0 голосов
/ 08 декабря 2018

На основании этого комментария от OP:

, если пользователь вводит 3 слова и два из них совпадают с ответом, это также должно быть хорошо!даже лучше, если возможно даже 3 слова или более, пока пользователь помещает в него мои два слова ..

Вы можете проверить, являются ли оба слова белыми в тексте, используя два условия на if:

textwunf_1.toLowerCase (). IndexOf ("word1")> = 0

AND

textwunf_1.toLowerCase (). IndexOf ("word2")> = 0

Попробуйте ввести следующий код:

var textwunf_2 = 'word1';
var textwunf_3 = 'word2';

function checkText()
{
    var textwunf_1 = document.getElementById("wunf").value;

    if ((textwunf_1.toLowerCase().indexOf(textwunf_2) >= 0) &&
        (textwunf_1.toLowerCase().indexOf(textwunf_3) >= 0))
    {
        window.open("URL","_self");
    }
    else
    {
        // xxx
    }
}
...