これは私には非常に簡単な要件だので、私:
var Dom = {
get: function(el) {
if (typeof el === 'string') {
return document.getElementById(el);
} else {
return el;
}
},
add: function(el, dest) {
var el = this.get(el);
var dest = this.get(dest);
dest.appendChild(el);
},
remove: function(el) {
var el = this.get(el);
el.parentNode.removeChild(el);
}
};
var Event = {
add: function() {
if (window.addEventListener) {
return function(el, type, fn) {
Dom.get(el).addEventListener(type, fn, false);
};
} else if (window.attachEvent) {
return function(el, type, fn) {
var f = function() {
fn.call(Dom.get(el), window.event);
};
Dom.get(el).attachEvent('on' + type, f);
};
}
}()
};
jQueryのテキストエリアにデータを追加あなたが立ち往生しているところがはっきりしていません。私はあなたのHTML( "contentlng")に表示されていない要素を参照しているので、あなたの既存のコードを把握するのは難しいとは考えていません。また、独自のDOMコードをjQueryと混在させるのは少し意味がないようです。 jQueryはまったく必要ですが、なぜそれを含めることにしたのですか?それを使用するのはなぜですか?
とにかく、以下の短い関数は、(JSオブジェクトを使って)現在のアイテムのリストを保持し、その新しいアイテムをそのリストに対してチェックします。アイテムをダブルクリックすると削除されます。私は準備ができて、文書でこれを入れてきましたが、あなたが合うようにあなたはそれを管理することができます:私が代わりにテキストエリアの(境界線を持っており、垂直方向のスクロールを可能にするためにスタイル)のdivを使用してい
<script>
$(document).ready(function() {
var items = {};
$("#lkaddlanguage").click(function(){
var currentItem = $("#textval").val();
if (currentItem === "") {
alert("Please enter a value.");
} else if (items[currentItem]) {
alert("Value already exists.");
} else {
items[currentItem] = true;
$("#txtdisplayval").append("<span>" + currentItem + "; </span>");
}
// optionally set up for entry of next value:
$("#textval").val("").focus();
return false;
});
$("#txtdisplayval").on("dblclick", "span", function() {
delete items[this.innerHTML.split(";")[0]];
$(this).remove();
});
});
</script>
<input type="textbox" id="textval">
<a href="#lnk" id="lkaddlanguage" >Add Data</a><br>
<div id="txtdisplayval" ></div>
<style>
#txtdisplayval {
margin-top: 5px;
width : 200px;
height : 100px;
overflow-y : auto;
border : 1px solid black;
}
</style>
注意。
私は、重複したアイテムや空のアイテムのアラートを表示するようにコーディングしていますが、明らかにそのアイテムを削除して重複を無視する(または独自のエラー処理を代用する)ことができます。また、入力フィールドをクリアしてフォーカスを次の値を入力する準備が整ったところに戻すと便利かもしれないと思っていましたが、もちろん削除することもできます。
の作業のデモ:http://jsfiddle.net/LTsBR/1/
jQueryが利用可能な場合、なぜこの自己記述DOMクラスを使用しますか? – ThiefMaster
私はDOMを使用する理由dobuleがtextarea上の項目をクリックすると、それが削除されるためです。 –
しかし、jQueryはダブルクリックを処理できます。 jQueryをまったく使用しないのは間違いありませんが、それを含めることにはあまり意味がありません。 – nnnnnn