span
通过我从id
数字创建的循环list
。- 在表单输入下添加列表
有必要通过单击特定跨度,将跨度的文本扔到输入中
response['is_taken'] = ['some', 'some2']
html
<script>
... some ajax code ...
var list = ''
for (var i in response.is_taken){
list = list + '<span name="'+(response.is_taken[i])+'" id="'+(i)+'">'+(response.is_taken[i])+'</span> '
}
$('#ajax-service').after('<div id="ajax-service-list" name="ajax-service-list">'+(list)+'</div>')
... some ajax code ...
</script>
<form action="/orders/add/" method="post">
<label for="ajax-service">Услуга:</label>
<input type="text" name="one_form-service" id="ajax-service" class="form-control">
<button type="submit" class="btn btn-primary btn-block">Добавить заказ</button>
</form>
如果它很容易发送,那么document.getElementById('inputId').value = spanId.textContent;
但是如何单击跨度,获取其ID并将其传递给输入?
UPD
下面的代码会引发错误:
Uncaught TypeError: Cannot read property 'addEventListener' of null
at Object.success (?category=simple:135)
at c (jquery-3.6.0.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.6.0.min.js:2)
at l (jquery-3.6.0.min.js:2)
at XMLHttpRequest.<anonymous> (jquery-3.6.0.min.js:2)
for (var i in response.is_taken) {
list = list + '<span class="badge bg-secondary" name="'+(response.is_taken[i])+'" id="#service'+(i)+'">'+(response.is_taken[i])+'</span> '
}
//console.log("i: "+i);
let elem_input = document.querySelector("ajax-service")
let elem = document.querySelector("service"+i);
elem.addEventListener("click", function(e){
elem_input.value = e.target.getAttribute("name");
});
将事件处理程序添加
click
到整个容器并在那里做任何你想做的事情。如果没有数千个 span 元素,则在循环中创建事件侦听器