繁体   English   中英

jQuery动态子选择,结合了last和form元素

[英]jquery dynamic subselection combining last and form elements

更新资料

整理了进行中的解决方案并添加了一些其他详细信息

我有一个表单区域,可根据模板创建克隆。 为了确保表单按顺序发送,脚本会在发送时对表单进行检查,并附加一个定义当前批次集的数字。 下面是正在发生的事情的过度简化表示:

<form>
    <div class="batch-template">
        <div class="batch-piece">
            <a class="clone" />
            <input name="test-input">
            <input name="another-test-input">
            <select name="a-drop-down">
        </div>
    </div>
    <div class="batch-paste-area">
    </div>
</form>

页面开始时:

  • “批处理模板”的内容存储到对象变量
  • 原始模板已从页面中删除
  • 模板的实例将附加到“批处理粘贴区域”

以下是单击两次后创建的输出的示例。

<form>
    <div class="batch-template">
    </div>
    <div class="batch-paste-area">
        <div class="batch-piece">
            <a class="clone" />
            <input name="test-input">
            <input name="another-test-input">
            <select name="a-drop-down">
        </div>
        <div class="batch-piece">
            <a class="clone" />
            <input name="test-input">
            <input name="another-test-input">
            <select name="a-drop-down">
        </div>
    </div>
</form>

提交表单时:在序列化之前,我希望脚本在“批处理粘贴区域”内循环遍历每个“批处理”,并将计数值添加到每个表单字段名称的末尾。 继续上面的设置,结果(对浏览器而言)如下所示:

<form>
    <div class="batch-template">
    </div>
    <div class="batch-paste-area">
        <div class="batch-piece">
            <a class="clone" />
            <input name="test-input1">
            <input name="another-test-input1">
            <select name="a-drop-down1">
        </div>
        <div class="batch-piece">
            <a class="clone" />
            <input name="test-input2">
            <input name="another-test-input2">
            <select name="a-drop-down2">
        </div>
    </div>
</form>

到目前为止,我可以在粘贴区域中遍历每个输入,也可以只选择最后一个。

选择最后一批很简单:

var intCount = 1;
$('.batch-paste-area .batch-piece').each(function(){
    /* 
    * Would like to be able to loop through form fields here 
    * Below is an attempt to select all form fields for current set 
    */
    $(this + ' input, '+ this + ' select').each(function() {
        var strName = $(this).attr('name') + intCount;
        $(this).attr('name', strName);
    });
    intCount++;    
});

令人沮丧的是,我实际上已经提前尝试了正确的解决方案,但当时却忘记使用逗号!

var intCount = 1;
$('.batch-paste-area .batch-piece').each(function(){
    /* 
    * Would like to be able to loop through form fields here 
    * Below is an attempt to select all form fields for current set 
    */
    $(this).find("input, select").each(function() {
        var strName = $(this).attr('name') + intCount;
        $(this).attr('name', strName);
    });
    intCount++;    
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM