在我的场景中,我有一个文本框,用户可以在其中扫描条形码扫描器,扫描条形码的值将分布在变量列表输入字段中。
我正在使用JQuery来设置那些生成字段的值
动态生成DIV的示例是
<div class="editorRow">
<input type="hidden" name="gifts.index" autocomplete="off" value="a041d40e-d016-4543-b3f1-bf72239e1377" />
Area Code <input id="gifts_a041d40e-d016-4543-b3f1-bf72239e1377__AreaCode" name="gifts[a041d40e-d016-4543-b3f1-bf72239e1377].AreaCode" type="text" value="0" />
Account No: <input id="gifts_a041d40e-d016-4543-b3f1-bf72239e1377__ConsCode" name="gifts[a041d40e-d016-4543-b3f1-bf72239e1377].ConsCode" type="text" value="0" />
Amount: <input id="gifts_a041d40e-d016-4543-b3f1-bf72239e1377__CAmount" name="gifts[a041d40e-d016-4543-b3f1-bf72239e1377].CAmount" type="text" value="0" />
Coll No: <input Value="1" id="gifts_a041d40e-d016-4543-b3f1-bf72239e1377__CollNo" name="gifts[a041d40e-d016-4543-b3f1-bf72239e1377].CollNo" type="text" value="1" />
<a href="#" class="deleteRow">delete</a>
<span class="field-validation-valid" id="gifts_a041d40e-d016-4543-b3f1-bf72239e1377__AreaCode_validationMessage"></span>
<span class="field-validation-valid" id="gifts_a041d40e-d016-4543-b3f1-bf72239e1377__ConsCode_validationMessage"></span>
<span class="field-validation-valid" id="gifts_a041d40e-d016-4543-b3f1-bf72239e1377__CAmount_validationMessage"></span>
如果您看到有一个隐藏字段具有索引和值=“a041d40e-d016-4543-b3f1-bf72239e1377”,这在其他成员中很常见,并带有其名称。当我再添加一个DIV时,隐藏的输入值再次改变,并且该div的所有成员具有相同的公共值。
我遇到了如何处理它,到目前为止我已成功将扫描条码的值分配给输入框,这些输入框位于动态DIV的外侧,如:
$("#ScanBCode").keyup(function (e) {
barCode = $("#ScanBCode").val();
if (barCode.length == 21) {
var count = 1;
Checking(count);
}
function Checking(count) {
var code = barCode.substr(2, 3);
var ACode = barCode.substr(5, 3);
var Ccode = barCode.substr(8, 5);
var Amount = barCode.substr(13, 8) / 1000;
$("#TabACode").val(ACode);
$("#TabCCode").val(Ccode);
$("#TabAmount").val(Amount);
$("#TabCollNo").val(code);
$("#ScanBCode").val("");
}
});
任何想法
答案 0 :(得分:2)
我不确定这是否正确,但似乎你正在寻找一种循环jquery集合的方法,可以使用jQuery.each来完成。
因此,我建议不要在输入字段上注意某些生成的ID,而是建议循环遍历所有生成的“字段”,并按类editorRow
进行操作。请注意,您不必为每个输入字段设置单独的ID,而是必须在它们上设置一些类,例如:
<div class="editorRow">
<!-- set a class on your input fields -->
Area Code <input class="areaCode" type="text" value="..." />
</div>
现在您可以在keyup
处理程序中应用以下javascript:
$('.editorRow').each(function(){
var $row = $(this);
$('.areaCode', $row).val('somevalue'); //do this for all of your input fields
});
回帖,以防万一在这里不清楚。
答案 1 :(得分:0)
你的工作代码非常好,
$("#ScanBCode").keyup(function (e) {
barCode = $("#ScanBCode").val();
if (barCode.length == 21) {
var code = barCode.substr(2, 3);
var ACode = barCode.substr(5, 3);
var Ccode = barCode.substr(8, 5);
var Amount = barCode.substr(13, 8) / 1000;
$('.editorRow').each(function () {
var $row = $(this);
var chk = $('.text-box-Area', $row).val();
//alert(chk);
if (chk == 0) {
$('.text-box-Area', $row).val(ACode);
$('.text-box-Cons', $row).val(Ccode);
$('.text-box-coll', $row).val(code);
$('.text-box-Amount', $row).val(Amount);
$("#ScanBCode").val("");
}
});
}
});