亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何在填寫輸入字段并選中復選框后向我的網址添加參數而不提交表單

如何在填寫輸入字段并選中復選框后向我的網址添加參數而不提交表單

慕娘9325324 2023-07-20 16:21:45
我正在編寫一個簡單的費用計算器,我有一些復選框和文本輸入,我需要將輸入的值添加到我的網址中,以便我可以將網址發送給具有相同值的人。我已在字段值中設置參數,例如:value="<?= isset($_GET['collect']) ? $_GET['collect'] : '0' ?>"當我手動在網址中輸入參數時,一切正常,例如:myurl.com/?collect=200&collectBudget=50如果選中復選框或在輸入字段中輸入值,我需要在 url 中動態包含參數。她是簡單計算器的示例https://codepen.io/alchy/pen/xxOQqeO
查看完整描述

1 回答

?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

由于缺乏額外的信息,我想出了這個,它應該主要做你想做的事情,但是你需要決定你想要的 url 查詢名稱是什么,你希望如何/何時重置 url,如果你想要在值為 0 時顯示查詢值以及如何解析復選框值:

$( document ).ready(function() {

  // Get the base URL

  const baseUrl = location.href.replace(location.search, '');


  // Find the Input elements

  const collectCheckbox = document.getElementById('collect');

  const platformInput = document.getElementById('nPlatform');

  const platformBudInput = document.getElementById('PlatformBud');

  const displayCheckbox = document.getElementById('display');

  const numStoresInput = document.getElementById('nStores');

  const storeBudInput = document.getElementById('storBud');


  // Attach listeners to the Input elements

  collectCheckbox.addEventListener('change', updateUrl);

  platformInput.addEventListener('input', updateUrl);

  platformBudInput.addEventListener('input', updateUrl);

  displayCheckbox.addEventListener('change', updateUrl);

  numStoresInput.addEventListener('input', updateUrl);

  storeBudInput.addEventListener('input', updateUrl);


  var timeout = null;


  function calculatePrice() {

    var collectCheck = document.getElementById('collect');

    var displayCheck = document.getElementById('display');


    var xPlatfor = document.getElementById('nPlatform').value;

    var pBudget = document.getElementById('PlatformBud').value;


    var xStore = document.getElementById('nStores').value;

    var sBudget = document.getElementById('storBud').value;


    var collectAmount,

      collectBudget,

      displayAmount,

      displayBudget,

      pricePerMonth,

      pricePerYear;

    collectAmount = 0;

    collectBudget = 0;

    displayAmount = 0;

    displayBudget = 0;

    pricePerMonth = 0;

    pricePerYear = 0;


    if (collectCheck.checked == true && xPlatfor > 0 && pBudget > 0) {

      collectAmount = pBudget;

    }

    if (displayCheck.checked == true && xStore > 0 && sBudget > 0) {

      displayAmount = xStore * sBudget;

    }


    pricePerMonth = +collectAmount + +displayAmount;

    pricePerYear = pricePerMonth * 12;


    document.getElementById('pricePerM').innerHTML = pricePerMonth;

    document.getElementById('pricePerY').innerHTML = pricePerYear;

  }


  function updateUrl() {

    if (!(collectCheckbox.checked || displayCheckbox.checked || platformInput.value || platformBudInput.value || numStoresInput.value || storeBudInput.value)) {

      return baseUrl;

    }


    let newUrl = new URL(`${baseUrl}?`);

    collectCheckbox.checked && newUrl.searchParams.append('collect', 1);

    displayCheckbox.checked && newUrl.searchParams.append('display', 1);

    platformInput.value && newUrl.searchParams.append('platforms', platformInput.value);

    platformBudInput.value && newUrl.searchParams.append('platformBudget', platformBudInput.value);

    numStoresInput.value && newUrl.searchParams.append('numStores', numStoresInput.value);

    storeBudInput.value && newUrl.searchParams.append('storeBud', storeBudInput.value);

    history.pushState({}, '', newUrl.toString());

  }


  calculatePrice();


  document.addEventListener('click', function (e) {

    if (e.target.name == 'question_1') {

      calculatePrice();

    }

  });

});

如有任何疑問,請告訴我。


查看完整回答
反對 回復 2023-07-20
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號