2016-08-15 59 views
1

我要去的例子。如何在不靜態時突出顯示鍵入的文本?

我有兩個Textareas。一個擁有一個單詞列表,每行一個,這個列表每次都不一樣。

我的第二個文本區域將被用戶輸入。我的目標是突出顯示第一個文本區域中的單詞,並將該單詞輸入到第二個文本區域中。我附上了一張照片,展示了我想要完成的事情。

例子:http://imgur.com/a/I27eO

我的代碼只需按下一個單詞列表到第一個文本區域和分離他們。我正在尋找如何突出所需單詞的幫助。

<textarea class="col-md-3" id="inputArray1" rows="20" cols="10" placeholder="Input1"></textarea> 
<textarea class="col-md-3" id="inputArray2" rows="20" cols="10" placeholder="Input2"></textarea> 

//holding input values for text area 
var InputVar = document.getElementById("inputArray1").value; 
var InputVar2 = document.getElementById("inputArray2").value; 

//holding output values for text area 
var OutputVar = document.getElementById("outputArray1"); 
var OutputVar2 = document.getElementById("outputArray2"); 

// takes string and breaks into substring array of words 
var SplitString = InputVar.split(/[\s]+/g); 

//displays list of words in 2nd text area 
OutputVar.value = SplitString; 
+1

您不能突出內部'textarea'文本。是否有可能使用一個普通的'div'和一個包含在''內的單詞列表? – Aziz

+0

單詞列表必須從用戶先前輸入的字符串/數組中推出。只要我可以將這些信息傳遞給div就行了。主要目標是突出顯示正在顯示的文字。 – Pyreal

+0

是否區分大小寫? – Aziz

回答

4

既然你標記的jQuery,這裏是如果任何用戶字匹配列出的任何話,檢查基本功能:

$("#userArray").on('change keyup paste', function() { 
 
    var input = $(this).val().split("\n"); 
 
    $('#listArray span').each(function() { 
 
    $(this).removeClass('active'); 
 
    if ($.inArray($(this).text(), input) != -1) { 
 
     $(this).addClass('active'); 
 
    } 
 
    }); 
 
});
#list_input > div { border:4px solid; padding: 1em; margin: 1em auto; } 
 
#listArray { overflow: auto; } 
 
#listArray span { display: block; float: left; clear: left; padding:4px; margin:1px; } 
 
#listArray span.active { background: yellow; } 
 
#userArray { width: 100%; height: 150px; border: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container" id="list_input"> 
 
    <div id="listArray"> 
 
    <span>Lorem</span> 
 
    <span>Eos</span> 
 
    <span>Earum</span> 
 
    <span>Tempora</span> 
 
    <span>Recusandae</span> 
 
    </div> 
 
    <div> 
 
    <textarea id="userArray" placeholder="enter words..."></textarea> 
 
    </div> 
 
</div>

的jsfiddle:https://jsfiddle.net/azizn/3x3ga3tL/


編輯:您可以使用下面的腳本JS數組追加的單詞列表動態:

var words = ["Test1", "Test2", "Test3","Test4"]; 
for (var i = 0; i < words.length; i++) { 
    $('#listArray').append("<span>" + words[i] + "</span>"); 
} 

的jsfiddle:https://jsfiddle.net/azizn/3x3ga3tL/6/

+0

使用contenteditable div這正是我所需要的。有沒有辦法讓大小寫敏感。另外,當這些詞被刪除,他們仍然保持突出顯示,所以我不得不作出某種更新來檢查當前狀態? – Pyreal

+0

@Pyreal哦,我忘了這件事。刪除單詞時,我添加了不區分大小寫和類重置。 – Aziz

+0

@Pyreal我以爲你說你需要兩個textareas不會是一樣的嗎?或者用戶輸入只需要在一端? – Zach

相關問題