2015-10-18 3 views
1

Я хочу, чтобы проверить, если значение моего текстового поля является почти такой же, как требуется, например:Как я могу проверить, если текст почти такой же, как требуется

У меня есть HTML-код:

<textarea class="ab" placeholder="Type here"></textarea> 
<div class="result"> 
</div> 

и код Jquery:

$(document).ready(function(){ 

    $(".btn").click(function(){ 
    var a = $(".ab").val(); 
    var b = $(".result").html(); 
    /* */ 



if(a.indexOf('Which of the following is generally true about Open Source software?') >= 0){$('.result').html('Its usually developed on a volunteer basis and anyone is free to change it (correct).');} /* */ 
    else{ 
     $(".result").html("error"); 

    } 
    }); 

}); 

этот код не работает, как то, что я хочу на самом деле, это именно то, что я пытался сделать. Но вещь я хочу, например, когда значение $('.ab') почти такой же, как текст Which of the following is generally true about Open Source software? как the following is generally true или true about the Open Source, то $(".result") еще есть HTML как Its usually developed on a volunteer basis and anyone is free to change it (correct).

Так как же я могу это сделать, спасибо за вашу помощь

+1

не простое решение, сделать так, я исследую нечеткий поиск. Вопрос слишком широк, если нет более точных критериев поиска. – charlietfl

+0

Требуется, если пять из десяти входных слов соответствуют строкам, что делать? – guest271314

ответ

0

На самом деле это должно быть:

$(document).ready(function(){ 
     $(".btn").click(function(){ 
      var a = $(".ab").val(); 
      var b = $(".result").html(); 
      var c = 'Which of the following is generally true about Open Source software?'; 
      console.log(c.indexOf(a)); 
      if(c.indexOf(a) >= 0){ 
       $('.result').html('Its usually developed on a volunteer basis and anyone is free to change it (correct).'); 
      } else { 
       $(".result").html("error"); 
      } 
     }); 

    }); 

<textarea class="ab" placeholder="Type here">following is generally true about Open Source</textarea> 
<div class="result"></div> 
<button class="btn">test</button> 
+0

это не работает для меня, когда я тестирую строку: «Что из перечисленного в целом», оно не возвращается к результату «Обычно он разрабатывается на добровольной основе, и любой может изменить его (правильно) . « [jsbin] (http://jsbin.com/kayibe/edit?html,css,js,output) – user3722325

+0

Он вернулся« Обычно он разрабатывается на добровольной основе, и любой может свободно его изменять (правильно) ». для меня. –

1

Попробуйте разбить входной текст на массив, используя $.each() для повторения входных слов, если входные слова соответствуют по меньшей мере пяти словам в выбранной фразе, верните true, else верните false в if; например.; попробуйте печатать или наклеивать на textarea

the following is generally true или true about the Open Source

$(document).ready(function() { 
 

 
    $(".btn").click(function() { 
 
    var a = $(".ab"); 
 
    var b = $(".result"); 
 
    var arr = a.val().split(/\s+/); 
 
    var n = 0; 
 
    var phrase = "Which of the following is generally true about Open Source software?"; 
 
    $.each(arr, function(key, val) { 
 
     if(phrase.indexOf(val) >= 0) ++n; 
 
    }) 
 
    
 
    if (n >= 5) { 
 
    b.html('Its usually developed on a volunteer basis and anyone is free to change it (correct).'); 
 
    } 
 
    else { 
 
     b.html("error"); 
 
    }; 
 
    a.val(""); n = 0; 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<textarea class="ab" placeholder="Type here"></textarea> 
 
<div class="result"></div> 
 
<button class="btn">click</button>

+0

ну, спасибо, но на самом деле это не работает со строкой «следующее, как правило, верно». – user3722325

+0

@ user3722325 «Следующее, как правило, истинно», - это четыре слова, которые пытались использовать «в общем, как правило»? Или отрегулируйте условие 'if' на' n> = 4'. Обратите внимание: не проверяет, является ли предыдущее слово текущим словом при увеличении количества совпадений; т. е. «true true true true true» может возвращать «true»; хотя эта часть может быть скорректирована для проверки совпадений разных слов – guest271314

+0

@ user3722325 См. также http://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense/ – guest271314

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