2017-06-19 29 views
-1

今の1時間を探していて、これでも簡単な解決策が見つからない場合は、 のように、jqueryと長いスクリプトを使って実際には意味をなさないと思われるようです。onclick append <a> item</a> text to textarea

申し訳ありませんが、私はこれについて無知ですか?

私がやろうとしていることは、かなり簡単なものでなければならず、何かがステップアップしてJavaScriptの部分を完成することができれば誠に感謝しています。私はこれを行うための技術や知識が不足していることを認めなければなりません。私が行った研究は、私がしようとしていることと結合できない答えに私を導きました。簡単な言葉で

<textarea id="cartlist">items will be copied here when you click on them</textarea> 
<a href="#" onclick="trigger the add to list function">item name 1</a> 
<a href="#" onclick="trigger the add to list function">item name 2</a> 
<a href="#" onclick="trigger the add to list function">item name 3</a> 
<a href="#" onclick="trigger the add to list function">item name 4</a> 

: onclickを追加し、あなたが特定の要素をクリックするとonclickの自動的にリストに追加されます食料品のリストに似たテキストエリア にテキストを追加します。事前に

(牛乳、砂糖、ベーコン、など。)

感謝!

+1

あなたはあなたの質問に言い換えることができますか?私はあなたの目的を理解できません。何を達成したいのですか? –

+0

[ask]を確認してください。あなたは実際に質問をしていないようです。あなたが試したこととどこに問題があったかを示す[mcve]を必ず含めてください。 [あなたは最初に研究に専念することを期待しています](https://meta.stackoverflow.com/a/261593/497418)に注意してください。 – zzzzBov

+0

コードを書くようになっているようです...あなた自身のコードを書いてください –

答えて

0

シンプルな純粋なJSあなたはOPのコメントまでこの

function CopyToTextarea(el){ 
 
    var text = el.textContent; 
 
    var textarea = document.getElementById('cartlist'); 
 
    textarea.value = textarea.value + text +'\n'; 
 
}
#cartlist{ 
 
    width : 100%; 
 
    height : 100px; 
 
    line-height : 30px; 
 
}
<textarea id="cartlist"></textarea> 
 
<a href="#" onclick="CopyToTextarea(this)">item name 1</a> 
 
<a href="#" onclick="CopyToTextarea(this)">item name 2</a> 
 
<a href="#" onclick="CopyToTextarea(this)">item name 3</a> 
 
<a href="#" onclick="CopyToTextarea(this)">item name 4</a>

アップデート#1を行うことができます機能付きにどのような方法があります私がクリックしたかどうかを判断するもう一度、それはアクションを取って、リストから項目を削除するよりも?

function CopyToTextarea(el){ 
 
    var text = el.textContent,       // get this <a> text 
 
     textarea = document.getElementById('cartlist'), // textarea id 
 
     textareaValue = textarea.value,     // text area value 
 
     Regex = new RegExp(text + '\n', 'g'),   // make new regex with <a> text and \n line break 
 
     textareaValue = textareaValue.indexOf(text+'\n') > -1 ? textareaValue.replace(Regex, '') : textareaValue + text+'\n'; // this is something similar to if statement .. mean if the textarea has the <a> text and after it line break .. replace it with its line break to blank (remove it) .. if not its not on textarea add this <a> text to the textarea value 
 
    textarea.value = textareaValue ;      // change the textarea value with the new one 
 
}
#cartlist{ 
 
    width : 100%; 
 
    height : 100px; 
 
    line-height : 30px; 
 
}
<textarea id="cartlist"></textarea> 
 
<a href="#" onclick="CopyToTextarea(this)">item name 1</a> 
 
<a href="#" onclick="CopyToTextarea(this)">item name 2</a> 
 
<a href="#" onclick="CopyToTextarea(this)">item name 3</a> 
 
<a href="#" onclick="CopyToTextarea(this)">item name 4</a>

+0

うわー、私が捜していたことを、大変に感謝しています。 – user3151178

+0

@ user3151178あなたは大歓迎ですが、この答えは簡単です。なぜなら、テキストエリアにアイテムを追加/追加する必要があるからです。あなたがこれまでに読んだ長い答えは、チェックのためです。追加された項目がもう一度それを追加していないかのようなものです。そういうわけで、別のコードが長いかもしれない理由です。 –

+0

Worked魅力のように、私の次の質問は、 - それがアクションを取ってリストからアイテムを削除するよりも、私がそれを再びクリックするかどうかを判断する方法はありますか? – user3151178

0

$('a').click(function(e) { 
 
    var txtarea = $('#cartlist').val(); 
 
    var txt = $(e.target).text(); 
 
    $('#cartlist').val(txtarea + txt + '\n'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<textarea id="cartlist"></textarea> 
 
<a href="#">item name 1</a> 
 
<a href="#">item name 2</a> 
 
<a href="#">item name 3</a> 
 
<a href="#">item name 4</a>

+0

ありがとうRaj! – user3151178

1

このような何か:必要ありませんjQueryのか、他のライブラリ。あなたが行くここ

var cartlist = document.querySelector('#cartlist'); 
 
var items = document.querySelectorAll('[data-item]'); 
 

 
[].forEach.call(items, function(item) { 
 
    item.addEventListener('click', function(){ 
 
     cartlist.value += "\n" + item.innerHTML; 
 
    }); 
 
});
#cartlist { 
 
    width: 100%; 
 
    height: 100px; 
 
}
<textarea id="cartlist">items will be copied here when you click on them</textarea> 
 
<br /> 
 
<a href="#" data-item="1">item name 1</a> 
 
<a href="#" data-item="2">item name 2</a> 
 
<a href="#" data-item="3">item name 3</a> 
 
<a href="#" data-item="4">item name 4</a>

0

var cartElement = document.getElementById("cartlist"); 
 

 
function trigger(event) { 
 
    var item = event.innerHTML; 
 
    cartElement.append(item + "\n"); 
 
}
<textarea id="cartlist"></textarea> 
 
<a href="#" onclick="trigger(this)">item name 1</a> 
 
<a href="#" onclick="trigger(this)">item name 2</a> 
 
<a href="#" onclick="trigger(this)">item name 3</a> 
 
<a href="#" onclick="trigger(this)">item name 4</a>