从input type ='text'创建元素JavaScript
问题描述:
我想创建具有从输入类型文本获取的信息的DOM元素。更具体地说: 我希望用户能够写出一个位置,并在他按下“Go!”后按钮插入文本创建一个元素,我也想有一个删除图标,当按下删除该插入。从input type ='text'创建元素JavaScript
我创建了我把输入值的功能,但如果我创建另一个<img>
内用同样的方法,当我创建的第二个条目就会把另一<img>
我不能创建的“Del”键
与前一个条目
search_btn.click(function() {
var place_reg = /^[a-z]+\d*[a-z]*(\s[a-z]+\d*[a-z]*)*?$/i;
var search_value = search_box.val();
var final_result = search_value.trim();
if (place_reg.test(final_result)) {
createDest(final_result);
} else {
alert('Please insert a valid destination');
}
document.getElementById('search_box').value = "";
});
function toTitleCase(str) {
return str.replace(/\w\S*/g, function(txt){ return txt.charAt(0).toUpperCase() +
txt.substr(1).toLowerCase();});
}
function createDest(value) {
var destination_i_search = document.createElement("div");
destination_i_search.innerHTML = toTitleCase(value);
destination_i_search.setAttribute("class" , "place");
$("#dest").append(destination_i_search);
}
答
这是很难理解你希望是什么做的,没有一个完整的例子,但是从评论你可能想是这样的:
的jsfiddle:http://jsfiddle.net/TrueBlueAussie/s6hn0n18/6/
我已经将其转换为在适当的情况下使用jQuery。
var search_btn = $('#search');
var search_box = $('#searchbox');
search_btn.click(function() {
var place_reg = /^[a-z]+\d*[a-z]*(\s[a-z]+\d*[a-z]*)*?$/i;
var search_value = search_box.val() || "";
var final_result = search_value.trim();
if (place_reg.test(final_result)) {
createDest(final_result);
} else {
alert('Please insert a valid destination');
}
search_box.val("");
});
function toTitleCase(str) {
return str.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
function createDest(value) {
// use a div container
var div = $("<div/>");
div.html(toTitleCase(value));
div.addClass("place");
// If you want to replace the previous entry
$("#dest").append(div);
var del = $('<input class="delete" type="button" value="X"/>');
$("#dest").append(del);
}
// This is a delegated event handler, attached to a non-changing ancestor
$(document).on('click', '.delete', function(){
// Remove the previous div (if of class place)
$(this).prev('.place').remove();
// Remove the delete button too
$(this).remove();
});
,关键是要增加一个委派的事件处理程序进行删除按钮。这些通过监听指定的事件(在这种情况下为click
)冒泡到一个不变的祖先起作用。它应用jQuery选择器。它调用导致事件的任何匹配元素的函数。如果没有更接近变化的内容可用,则默认祖先是document
。在这种情况下,您可以使用#dest
例如
$('#dest').on('click', '.delete', function(){
+0
是的,这是我想要的。当我回家时,我会提供完整的代码 – 2014-09-06 07:52:34
问题出在您未显示的代码中。请显示其余部分(例如,在JSFiddle中的HTML例子也会很好):) – 2014-09-06 06:51:40
你有这个标签的jQuery,但没有使用jQuery。如果你这样做,代码会更短/更简单,JQuery也是你的选择吗? – 2014-09-06 06:53:55
是的,我也使用jquery,但我不是很习惯它。我无法在Jquery文档中找到所需的 – 2014-09-06 07:04:40