gpt4 book ai didi

jquery - 循环遍历动态添加元素的数组

转载 作者:行者123 更新时间:2023-12-03 22:57:12 26 4
gpt4 key购买 nike

jQuery 新手,请求帮助解决我无法解决的问题。

克隆的表行包含 <input type="text" name="dt[]" id="dt1"> field 。下面是被克隆的模板行。

<table id="MyTable" name="MyTable">
<tr name="tr3" id="tr3">
<td>
<input type="text" name="dt[]" id="dt1">
</td>
<td>
<input type="file" name="fff[]" id="ff1">
</td>
</tr>
</table>

用户可能会创建其中几个字段,我正在尝试弄清楚如何循环遍历所有字段并在提交表单之前验证其中是否有文本。

请注意,我必须使用 jQuery .on() 方法来访问表单元素。需要如何对循环进行编码?最初,我一直在尝试这个(编辑):

$(document).on('click','#sub1',function() {
var d1 = $("[name^=dt]").val();
alert(d1);
if (d1 !=""){
$("#TheForm").submit();
} else {
alert("Empty fields!");
}
});

还有这个:

var d1 = $("#dt1").val();
alert(d1);

还有这个:

var d1 = $("#^dt").val();
alert(d1);

但无法获取数据。

<小时/>

编辑:根据要求,此代码克隆行:

$(document).on('click', '#add_row', function() {
$("table#MyTable tr:nth-child(4)")
.clone()
.show()
.find("input, span").each(function() {
$(this)
.val('')
.attr('id', function(_, id) {
var newcnt = id + count;
return id + count;
});
})
.end()
.appendTo("table")
;

count++;
if (count == 2) {
$('#add_row').prop('disabled', 'disabled');
}
}); //end add_row Function

最佳答案

您的 HTML 格式不正确。你应该这样做:

<input type="text" name="dt[]">

然后循环:

$('input[name^=dt]').each(function() {
// code
alert( this.value ); // $(this).val()
});

您尝试执行的操作无法通过 id 属性实现,但可以通过 name 属性实现。 id 应始终是唯一的

<小时/>

除此之外

您可以对所有输入使用通用的class名称,然后循环如下:

$('input.common_cls').each(function() {
// code
});
<小时/>

注意

"#^dt" 根本不是有效的选择器。正确的语法是

'输入[名称^=dt]'

输入[id^=dt]

<小时/>

您可以像下面这样实现验证

// this function will return true if no empty
// input exists, otherwise it will return false

function noEmptyExists() {
return $('input[name^=dt]').filter(function() {
return !$.trim( this.value );
}).length === 0;
}

$(document).on('click','#sub1',function() {
if( noEmptyExists() ) {
alert('Success');
} else {
alert('Failed');
}
});

Working sample

<小时/>

根据进度更新

this.val() 是错误的。

将此行更改为:

$(this).val()
<小时/>

在聊天中讨论并解决克隆问题后

完整代码

$(document).ready(function() {
var count = 1;
alert('doc ready');
var row = $("table#MyTable tr:eq(1)");
$(document).on('click', '#sub1', function() {
if (noEmptyExists()) {
alert('Success');
} else {
alert('Failed');
}
});

$(document).on('click', '#add_row', function() {
row.clone(true).find("input").each(function() {
$(this).val('').attr('id', function(_, id) {
var newcnt = id + count;
return id + count;
});
}).end().appendTo("table");
});

});

function noEmptyExists() {
return $('input[name^=dt]').filter(function() {
return !$.trim(this.value);
}).length === 0;
}

Working sample

关于jquery - 循环遍历动态添加元素的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12430456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com