第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

添加 HTML 直到達(dá)到要求

添加 HTML 直到達(dá)到要求

慕標(biāo)琳琳 2021-11-12 18:31:28
我正在嘗試創(chuàng)建一個(gè)表單,我需要用戶在其中添加至少 3 年的地址數(shù)據(jù)。但是,根據(jù)用戶是否輸入了正確的年數(shù),我在添加和刪除字段時(shí)遇到了問題。例如,將 1 添加到下面的年份框中 3 次就可以了。我得到 3 組地址字段,但是如果用戶隨后將最后一組更改為 2 年,則會添加第 4 組,而實(shí)際上什么都不應(yīng)該發(fā)生。如果我隨后將第二個(gè)地址更改為 2/3 年,它似乎也會出現(xiàn)故障,它會按原樣刪除以下地址,但將其改回 1 年并不會重新添加這些附加字段。希望這是有道理的,我只需要一個(gè)手來讓這個(gè)邏輯工作,因?yàn)槲覠o法弄清楚。不要評論我創(chuàng)建的用于生成 HTML 的函數(shù),這只是為了完成這項(xiàng)工作,請堅(jiān)持主題。注意:忽略底部 3 個(gè)功能,這些不是問題,也不是我的優(yōu)先事項(xiàng)。fieldset > div {  padding: 10px;  margin: 5px;  background: whitesmoke;  border: 1px solid lightgray;}<fieldset>    <h3>Address Details * denotes a required field</h3>    <div>        <div id="previousAddress0">          <div>              <div><label for="previous_address0">Address</label></div>              <div><textarea cols="40" id="previous_address0" name="finprop_previous_address0" placeholder="Previous Address" rows="4"></textarea></div>              <div></div>          </div>          <div id="previous_row_postcode0">              <div><label for="previous_postcode0">Postcode *</label></div>              <div><input id="previous_postcode0" name="previous_postcode0" placeholder="Postcode" type="text" maxlength="8">                </div>              <div></div>          </div>          <div id="row_months_years_at_address0">              <div><label for="years_at_address_0">How long at address *</label></div>              <div>                  <div><input id="years_at_address_0" maxlength="2" min="0" name="finprop_years_at_address0" placeholder="Years" size="4" type="text" class="years_at_address0"></div>                  <div><input id="months_at_address_0" maxlength="2" min="0" name="finprop_months_at_address0" placeholder="Months" size="4" type="text"></div>              </div>              <div></div>          </div>      </div>    </div>            <div id="yearsAdditional"></div></fieldset>
查看完整描述

2 回答

?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

每次迭代時(shí),count 在檢查當(dāng)前框是否大于 3后計(jì)算您將當(dāng)前框添加到的年份。這意味著在大多數(shù)情況下,如果最后一個(gè)框大于 1,將創(chuàng)建一個(gè)附加框。


要更改此year值,請?jiān)跈z查是否count大于 3之前添加當(dāng)前值。


    count += current.value;

    if (count > 3) {

        remove = true;

        current.added = false;

        document.querySelector(current.parent).parentNode.removeChild(document.querySelector(current.parent));

        delete addresses[keys[i]];

    }

例子:

let addresses = {

  '#years_at_address_0': { /* The default one */

    elm: document.querySelector('#years_at_address_0'),

    value: 0,

    parent: '#previousAddress',

    added: false

  }

};


function setupAddressChecking(watch)

{


    if (addresses[watch] === undefined) {

        addresses[watch] = {

            elm: document.querySelector(watch),

            value: 0,

            parent: '#previousAddress' + (Object.keys(addresses).length > 0 ? Object.keys(addresses).length : ''),

            added: false

        };

    }

    let count = Object.keys(addresses).length;


    addresses[watch].elm.addEventListener('change', function() {

        if (this.value && addresses[watch].value !== this.value) {


            addresses[watch].value = parseInt(this.value);


            if (calculateYears() && !addresses[watch].added) {

                document.querySelector('#yearsAdditional').appendChild(createNewAddress());

                addresses[watch].added = true;


                setupAddressChecking('#years_at_address_'+count);

            }

        }

    });


}


function calculateYears()

{

    let count = 0;

    let remove = false;


    const keys = Object.keys(addresses);


    for(var i = 0; i < keys.length; i++) {


        let current = addresses[keys[i]];

        count += current.value;

        if (count > 3) {

            remove = true;

            current.added = false;

            document.querySelector(current.parent).parentNode.removeChild(document.querySelector(current.parent));

            delete addresses[keys[i]];

        }




    }


    if (count === 3) {

        return false;

    }


    return !remove;

}


function createNewAddress()

{

    let count = Object.keys(addresses).length;


    return createHTML({


        0: { elm: createElement('div', {'id': 'previousAddress' + count}), root: null },


        1: { elm: createElement('div'), root: 0 },

        2: { elm: createElement('div'), root: 1},

        3: { elm: createElement('label', {'for': 'previous_address', 'text': 'Address'}), root: 2},

        4: { elm: createElement('div'), root: 1},

        5: { elm: createElement('textarea', {

            'cols': 40,

            'id': 'previous_address' + count,

            'name': 'finprop_previous_address',

            'placeholder': 'Previous Address',

            'rows': 4

        }), root: 4},

        6: { elm: createElement('div'), root: 1},


        7: { elm: createElement('div', { 'id': 'previous_row_postcode' + count}), root: 0 },

        8: { elm: createElement('div'), root: 7 },

        9: { elm: createElement('label', {'for': 'previous_postcode', 'text': 'Postcode *'}), root: 8 },

        10: { elm: createElement('div'), root: 7 },

        11: { elm: createElement('input', {

            'id': 'previous_postcode' + count,

            'name': 'previous_postcode',

            'placeholder': 'Postcode',

            'type': 'text',

            'maxlength': 8

        }), root: 10 },

        12: { elm: createElement('div'), root: 7 },


        13: { elm: createElement('div', {'id': 'row_months_years_at_address' + count}), root: 0 },

        14: { elm: createElement('div'), root: 13 },

        15: { elm: createElement('label', {'for': 'years_at_address_' + count, 'text': 'How long at address *'}), root: 14 },

        16: { elm: createElement('div'), root: 13 },

        17: { elm: createElement('div'), root: 16 },

        18: { elm: createElement('input', {

            'id': 'years_at_address_'  + count,

            'maxlength': 2,

            'min': 0,

            'name': 'finprop_years_at_address',

            'placeholder': 'Years',

            'size': 4,

            'type': 'text',

            'class': 'years_at_address'

        }), root: 17 },

        19: { elm: createElement('div'), root: 16 },

        20: { elm: createElement('input', {

            'id': 'months_at_address_' + count,

            'maxlength': 2,

            'min': 0,

            'name': 'finprop_months_at_address',

            'placeholder': 'Months',

            'size': 4,

            'type': 'text'

        }), root: 19 },

        21: { elm: createElement('div'), root: 13 }


    })[0].elm;


}


function createHTML(elements)

{

    let keys = Object.keys(elements);

    for (var i = 0; i < keys.length; i++) {

        if (elements[keys[i]].root === null || elements[keys[i]].root === i) {

            continue;

        }

        elements[elements[keys[i]].root].elm.appendChild(elements[keys[i]].elm);

    }

    return elements;

}


function createElement(type, options)

{

    let elm = document.createElement(type);

    if (options) {

        for(var i = 0; i < Object.keys(options).length; i++) {

            let key = Object.keys(options)[i];

            if (key === 'text') {

                elm.innerHTML = options[key];

                continue;

            }

            elm.setAttribute(key, options[key]);

        }

    }


    return elm;

}


setupAddressChecking('#years_at_address_0');

fieldset > div {

  padding: 10px;

  margin: 5px;

  background: whitesmoke;

  border: 1px solid lightgray;

}

<fieldset>


    <h3>Address Details * denotes a required field</h3>


    <div>

        <div id="previousAddress0">

          <div>

              <div><label for="previous_address0">Address</label></div>

              <div><textarea cols="40" id="previous_address0" name="finprop_previous_address0" placeholder="Previous Address" rows="4"></textarea></div>

              <div></div>

          </div>

          <div id="previous_row_postcode0">

              <div><label for="previous_postcode0">Postcode *</label></div>

              <div><input id="previous_postcode0" name="previous_postcode0" placeholder="Postcode" type="text" maxlength="8">  

              </div>

              <div></div>

          </div>

          <div id="row_months_years_at_address0">

              <div><label for="years_at_address_0">How long at address *</label></div>

              <div>

                  <div><input id="years_at_address_0" maxlength="2" min="0" name="finprop_years_at_address0" placeholder="Years" size="4" type="text" class="years_at_address0"></div>

                  <div><input id="months_at_address_0" maxlength="2" min="0" name="finprop_months_at_address0" placeholder="Months" size="4" type="text"></div>

              </div>

              <div></div>

          </div>

      </div>

    </div>

    

    

    <div id="yearsAdditional"></div>



</fieldset>


查看完整回答
反對 回復(fù) 2021-11-12
?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

提示(邏輯)

用循環(huán)乘以 HTML。循環(huán)內(nèi)是您想要的 HTML。在循環(huán)之前設(shè)置一個(gè) if 語句。


使用 進(jìn)行重置el.innerHTML = ""。


例子

let result = document.getElementById("result");



function createHTML(n, text) {

  let res = "";

  if (n < 4) {

    for (let i = 0; i < n; i += 1) {

      // Use your own HTML

      res += `<form id="form-${i + 2}">`;

      res += `<ul>`;

      res += `<li><textarea></textarea></li>`;

      res += `<li><span>Year</span><input class="year" type="text"></li>`;

      res += `<li><span>Month</span><input class="month" type="text"></li>`;

      res += `</ul>`;

      res += `</form>`;

    }

  }


  return res;

}


function multiply(n) {

  result.innerHTML = "";

  result.innerHTML = createHTML(n, "Heading");

}

form[id^="form-"] {

  border: 1px solid lightgrey;

  padding: 15px;

  background: whitesmoke;

  margin: 15px 0;

}


form[id^="form-"] ul {

  list-style: none;

  padding: 0;

}

<!-- First form -->

<form id="form-1">

  <ul>

    <li><textarea></textarea></li>

    <li><span>Year</span><input class="year" type="text"></li>

    <li><span>Month</span><input class="month" type="text"></li>

  </ul>

  <input type="text" onkeyup="multiply(this.value)">

</form>



<div id="result"></div>


查看完整回答
反對 回復(fù) 2021-11-12
  • 2 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號