簡體   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