Javascript Jquery未正确追加值
我在页面加载上有一组固定的输入字段。我有显示值的复选框,当有人选中复选框时,值将添加到输入字段。如果所有输入字段都已填充,则会创建一个新字段。我的问题是,复选框值在现有输入字段中正确插入,如果值超过,则会创建新的输入字段,但在创建输入字段时不会立即插入值。只有在下一次单击时,才会在新创建的输入字段中插入值。这是代码Javascript Jquery未正确追加值,javascript,jquery,Javascript,Jquery,我在页面加载上有一组固定的输入字段。我有显示值的复选框,当有人选中复选框时,值将添加到输入字段。如果所有输入字段都已填充,则会创建一个新字段。我的问题是,复选框值在现有输入字段中正确插入,如果值超过,则会创建新的输入字段,但在创建输入字段时不会立即插入值。只有在下一次单击时,才会在新创建的输入字段中插入值。这是代码 <script> function fillin(entire,name,id,key) { if (entire.checked == true
<script>
function fillin(entire,name,id,key) {
if (entire.checked == true) {
var split_info = new Array();
split_info = name.split(":");
var div = $("#Inputfields"+id);
var till = (div.children("input").length)/4;
var current_count = 0;
for (var j=0;j<till;j++) {
if (document.getElementById("insertname_"+j+"_"+id).value == "" && document.getElementById("insertnumber_"+j+"_"+id).value == "") {
document.getElementById("insertname_"+j+"_"+id).value = split_info[0];
document.getElementById("insertnumber_"+j+"_"+id).value = split_info[1];
break;
} else
current_count = current_count+1;
if (current_count == till) {
var x= addnew(id);
x =x+1;
$("#Inputfields"+id).find("#insertname_"+x+"_"+id).value = split_info[0];
alert($("#Inputfields"+id).find("#insertname_"+x+"_"+id).value);
document.getElementById("insertname_"+x+"_"+id).text = split_info[0];
//alert(document.getElementById("insertname_"+x+"_"+id).value);
//document.getElementById("insertnumber_"+x+"_"+id).value = split_info[1];
}
}
} else {
}
}
</script>
<script>
function addnew(n) {
//var id = $(this).attr("id");
var div = $("#Inputfields"+n);
var howManyInputs = (div.children("input").length)/4;
alert(howManyInputs);
var val = $("div").data("addedCount");
var a = '<input type="search" id="insertinstitute_'+(howManyInputs)+'_'+n+'" placeholder="Institute" class="span3">';
var b = '<input type="search" id="insertname_'+(howManyInputs)+'_'+n+'" placeholder="name" class="span3">';
var c = '<input type="search" name="" id="insertnumber_'+(howManyInputs)+'_'+n+'" placeholder="number" class="span3">';
var d = '<input type="search" name="" id="insertarea_'+(howManyInputs)+'_'+n+'" placeholder="area" class="span3">';
var fin = a+b+d+c;
$(fin).appendTo(div);
div.data("addedCount", div.data("addedCount") + 1);
return howManyInputs;
}
</script>
函数填充(完整、名称、id、键){
如果(完整的.checked==true){
var split_info=新数组();
split_info=name.split(“:”);
var div=$(“#输入字段”+id);
var-till=(div.children(“input”).length)/4;
无功电流_计数=0;
对于(var j=0;j而言,问题可能在于:
document.getElementById("insertname_"+x+"_"+id).text
元素中没有text
属性。元素中有textContent
(不在IE8-)、innerText
(在IE中)和innerHTML
。但是jQuery中有text
方法。因此,您可以执行以下操作之一:
document.getElementById("insertname_"+x+"_"+id).innerHTML = ...
或
此外,这些行:
$("#Inputfields"+id).find("#insertname_"+x+"_"+id).value = split_info[0];
alert($("#Inputfields"+id).find("#insertname_"+x+"_"+id).value);
.value
应该替换为.val()
,因为它们是jQuery对象。问题可能在这里:
document.getElementById("insertname_"+x+"_"+id).text
元素中没有text
属性。元素中有textContent
(不在IE8-)、innerText
(在IE中)和innerHTML
。但是jQuery中有text
方法。因此,您可以执行以下操作之一:
document.getElementById("insertname_"+x+"_"+id).innerHTML = ...
或
此外,这些行:
$("#Inputfields"+id).find("#insertname_"+x+"_"+id).value = split_info[0];
alert($("#Inputfields"+id).find("#insertname_"+x+"_"+id).value);
.value
应该替换为.val()
,因为这些都是jQuery对象。出于很多原因,我已经修改了很多代码。请比较两者
function fillin(entire, name, id, key) {
if (entire.checked) {
var split_info = [];
split_info = name.split(":");
var div = $("#Inputfields" + id);
var till = (div.children("input").length) / 4;
var current_count = 0;
var j = 0;
for (j = 0; j < till; j++) {
var myj = j + "_" + id;
if ($("#insertname_" + myj).val() === "" && $("#insertnumber_" + myj).val() === "") {
$("#insertname_" + myj).val(split_info[0]);
$("#insertnumber_" + myj).val(split_info[1]);
break;
} else {
current_count = current_count + 1;
}
if (current_count === till) {
var x = addnew(id) + 1;
div.find("#insertname_" + x + "_" + id).val(split_info[0]);
alert(div.find("#insertname_" + x + "_" + id).val());
$("#insertname_" + x + "_" + id).val(split_info[0]);
}
}
}
}
function addnew(n) {
var div = $("#Inputfields" + n);
var howManyInputs = (div.children("input").length) / 4;
alert(howManyInputs);
var myi = (howManyInputs) + '_' + n + '"';
var val = div.data("addedCount");
var a = '<input type="search" id="insertinstitute_' + myi + ' placeholder="Institute" class="span3">';
var b = '<input type="search" id="insertname_' + myi + ' placeholder="name" class="span3">';
var c = '<input type="search" name="" id="insertnumber_' + myi + ' placeholder="number" class="span3">';
var d = '<input type="search" name="" id="insertarea_' + myi + ' placeholder="area" class="span3">';
var fin = a + b + d + c;
$(fin).appendTo(div);
div.data("addedCount", val + 1);
return howManyInputs;
}
函数填充(完整、名称、id、键){
如果(全部选中){
风险值拆分信息=[];
split_info=name.split(“:”);
var div=$(“#输入字段”+id);
var-till=(div.children(“input”).length)/4;
无功电流_计数=0;
var j=0;
对于(j=0;j
出于各种原因,我修改了您的许多代码。请将两者进行比较
function fillin(entire, name, id, key) {
if (entire.checked) {
var split_info = [];
split_info = name.split(":");
var div = $("#Inputfields" + id);
var till = (div.children("input").length) / 4;
var current_count = 0;
var j = 0;
for (j = 0; j < till; j++) {
var myj = j + "_" + id;
if ($("#insertname_" + myj).val() === "" && $("#insertnumber_" + myj).val() === "") {
$("#insertname_" + myj).val(split_info[0]);
$("#insertnumber_" + myj).val(split_info[1]);
break;
} else {
current_count = current_count + 1;
}
if (current_count === till) {
var x = addnew(id) + 1;
div.find("#insertname_" + x + "_" + id).val(split_info[0]);
alert(div.find("#insertname_" + x + "_" + id).val());
$("#insertname_" + x + "_" + id).val(split_info[0]);
}
}
}
}
function addnew(n) {
var div = $("#Inputfields" + n);
var howManyInputs = (div.children("input").length) / 4;
alert(howManyInputs);
var myi = (howManyInputs) + '_' + n + '"';
var val = div.data("addedCount");
var a = '<input type="search" id="insertinstitute_' + myi + ' placeholder="Institute" class="span3">';
var b = '<input type="search" id="insertname_' + myi + ' placeholder="name" class="span3">';
var c = '<input type="search" name="" id="insertnumber_' + myi + ' placeholder="number" class="span3">';
var d = '<input type="search" name="" id="insertarea_' + myi + ' placeholder="area" class="span3">';
var fin = a + b + d + c;
$(fin).appendTo(div);
div.data("addedCount", val + 1);
return howManyInputs;
}
函数填充(完整、名称、id、键){
如果(全部选中){
风险值拆分信息=[];
split_info=name.split(“:”);
var div=$(“#输入字段”+id);
var-till=(div.children(“input”).length)/4;
无功电流_计数=0;
var j=0;
对于(j=0;j
你也可以链接你的HTML,或者把它们放在JSFIDLE中吗?该死的,你的格式太乱了如果你在使用jQuery,为什么你仍然坚持使用document.getElementById
?不要把jQuery与太多的普通DOM函数和document.getElementById(“insertname”+x+“+id”)。text=split\u info[0]
肯定行不通。我冒昧地修改了代码。你能把你的HTML也链接起来吗,也许可以把它们放在JSFIDLE中吗?见鬼,你的格式太乱了。如果你在使用jQuery,为什么还要坚持使用document.getElementById
?不要把jQuery和太多的普通DOM函数混合在一起。还有document.getElementById(“insertname”+x+“+id”).text=split\u info[0];
肯定不起作用。我冒昧地修改了代码。即使使用了document.getElementById(“insertname”+x+“+id”)。innerHTML=
@Vinay,仍然存在同样的问题。不客气。但我的答案仍然有效,因此请务必修复代码。:)当然。我会通知我的朋友。:)当我编码时,我也会记住。即使使用document.getElementById(“insertname”+x+“+id”)。innerHTML=
@Vinay你很受欢迎。但我的答案仍然存在,所以