[英]How to assign value to dynamically created input box using javascript/Jquery
I am creating some input field dynamically using Jquery but need to assign value at the time of creation. 我正在使用Jquery动态创建一些输入字段,但需要在创建时分配值。 I am explaining my code below.
我在下面解释我的代码。
<input type="hidden" id="alldepdates" value="1,2,3,4">
<ul class="date_list input_fields_wrap">
<li><input type="text" name="ddates" id="ddates" value="1" readonly >
<a href="#" id="addbtn"><span style="margin-left:5px;min-width:20px;"><i class="fa fa-arrow-circle-down" style="font-size:18px;"></i></span></a><a class="btn btn-xs btn-action mob-m-button pull-right" style="padding: 2px 4px;" href="#">Book Now</a></li>
</ul>
Here I have some comma separated string value inside hidden input field and 1st element of that comma separated string is displayed in read only field. 在这里,我在隐藏的输入字段中有一些逗号分隔的字符串值,并且该逗号分隔的字符串的第一个元素显示在只读字段中。
<script>
$(function(){
var wrapper = $(".input_fields_wrap");
var addButton = $("#addbtn");
$(addButton).click(function(){
var alld=$("#alldepdates").val();
var alldsplit=alld.split(",");
var restArr=alldsplit.shift();
if(restArr.length > 0){
$(wrapper).append("<li><input type="text" name="ddates" id="ddates" value="+restArr[0]+" readonly ><a class="btn btn-xs btn-action mob-m-button pull-right" style="padding: 2px 4px;" href="#">Book Now</a></li>");
$("#alldepdates").val(restArr.join(","));
};
});
})
</script>;
Here my need is when user will click on down-arraow
icon new field will created and always the first value of that comma separated string will assign to new field and when all value will be assigned then no field will create again. 这里我需要的是,当用户单击
down-arraow
图标时,将创建一个新字段,并且该逗号分隔的字符串的第一个值将始终分配给新字段,而当所有值都将被分配时,则不会再创建任何字段。
You are not formatting the htmlString correctly. 您没有正确格式化htmlString 。 Should be:
应该:
'<li><input type="text" name="ddates" id="ddates" value="'+alldsplit[0]+'" readonly ><a class="btn btn-xs btn-action mob-m-button pull-right" style="padding: 2px 4px;" href="#">Book Now</a></li>'
Though I prefer using Template Literals which allows embedded expressions. 尽管我更喜欢使用允许嵌入表达式的Template Literals 。
To attach event on dynamically created element you have to use on()
. 要将事件附加到动态创建的元素上,必须使用
on()
。
$(function(){ var wrapper = $(".input_fields_wrap"); $('body').on('click', 'a', function(){ var alld=$("#alldepdates").val(); var alldsplit=alld.split(","); alldsplit.shift(); if(alldsplit.length > 0){ $(wrapper).append(`<li><input type="text" name="ddates" id="ddates" value="${alldsplit[0]}" readonly ><a class="btn btn-xs btn-action mob-m-button pull-right" style="padding: 2px 4px;" href="#">Book Now</a></li>`); $("#alldepdates").val(alldsplit.join(",")); }; }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="hidden" id="alldepdates" value="1,2,3,4"> <ul class="date_list input_fields_wrap"> <li><input type="text" name="ddates" id="ddates" value="1" readonly > <a href="#" id="addbtn"><span style="margin-left:5px;min-width:20px;"><i class="fa fa-arrow-circle-down" style="font-size:18px;"></i></span></a><a class="btn btn-xs btn-action mob-m-button pull-right" style="padding: 2px 4px;" href="#">Book Now</a></li> </ul>
$(document).on('click', "#addbtn", function() {
var alld=$("#alldepdates").val();
var alldsplit=alld.split(",");
var restArr=alldsplit.shift();
if(restArr.length > 0){
$(wrapper).append('<li><input type="text" name="ddates" id="ddates" value="'+restArr[0]+'" readonly ><a class="btn btn-xs btn-action mob-m-button pull-right" style="padding: 2px 4px;" href="#">Book Now</a></li>');
$("#alldepdates").val(alldsplit.join());
};
You can do it easily. 您可以轻松做到。 You just need to know that
array.shift
removes and returns the first element of array. 您只需要知道
array.shift
会删除并返回array的第一个元素。
$(function () {
var wrapper = $('.input_fields_wrap');
var addButton = $('#addbtn');
$(addButton).click(function () {
var alld = $('#alldepdates').val();
var alldsplit = alld.split(',');
var removedArrayElement = alldsplit.shift();
if (alldsplit.length > 0) {
var inputMarkup = '<input type="text" name="ddates" id="ddates_' + alldsplit.length + '" value="' + removedArrayElement + '" readonly />';
var anchorMarkup = '<a class="btn btn-xs btn-action mob-m-button pull-right" style="padding: 2px 4px;" href="#">Book Now</a>';
$(wrapper).append('<li>' + inputMarkup + anchorMarkup + '</li>');
$("#alldepdates").val(alldsplit.join(','));
};
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.