设置动态生成的DIV输入字段的值

时间:2011-03-30 05:49:01

标签: jquery asp.net-mvc-2

亲爱的专家, 我正在关注Mr.Steve Sanderson Example处理可变长度列表,ASP.NET MVC 2样式。

在我的场景中,我有一个文本框,用户可以在其中扫描条形码扫描器,扫描条形码的值将分布在变量列表输入字段中。

我正在使用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("");
}

});

任何想法

2 个答案:

答案 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("");

            }
        });
    }

});