簡體   English   中英

保存選項表格並傳遞JS變量

[英]Save option form and pass JS variable

我有一個帶有單選按鈕和列表框的表單。 我試圖在按下按鈕時調用一個php文件,以將選定的選項保存到MySQL數據庫中。 我想傳遞選定的選項以及total_cost,這是一個JS變量。

當按下表單提交按鈕時,如何將JS變量傳遞給php文件?

<form action="saveConfig.php" class="hide-submit" method="post">

<div class="btn-configure step2button">
<span class="pcButtonText">
Save
</span>                                               
</div>


<ul id="radio" class="input-list">
  <li>
    <input id="item-1" name="config-prod" value="1.00" type="radio" onchange="updateTotal();">
    <label for="item-1">Item 1 [£1.00]</label>
  </li>
  <li>
    <input id="item-2" name="config-prod" value="12.34" type="radio" onchange="updateTotal();">
    <label for="item-2">Item 2 [£12.34]</label>
  </li>
  <li>
    <input id="item-3" name="config-prod" value="9.99" type="radio" onchange="updateTotal();">
    <label for="item-3">Item 3 [£9.99]</label>
  </li>
</ul>

<select id="plist" name="partlist" onchange="updateTotal();">
  <option value="99.99">CPU 1</option>
  <option value="123.00">CPU 2</option>
  <option value="250.54">CPU 3</option>
</select>



</form>
<br>
Total: <input id="total" type="text">

JS:

let buildcost = 25.00;

function updateTotal() {
  let radios = document.getElementsByName('config-prod');
  let select = document.getElementById('plist');
  let partcost = 0;

  for (let i = 0, j = radios.length; i < j; i++) {
    if (radios[i].checked) {
      partcost = parseFloat(radios[i].value);
      break;
    }
  }

  partcost += parseFloat(select.options[select.selectedIndex].value);

  let total_cost = buildcost + partcost;
  document.getElementById('total').value = total_cost.toFixed(2);
}

我無法弄清楚如何傳遞變量total_cost。 任何意見,將不勝感激。

您將必須創建一個input元素,然后將該元素添加到表單中,然后提交表單。

var inputElement=document.createElement("input");
inputElement.setAttribute("value",total_cost);

var form= document.getElementById("formId");
form.appendChild(inputElement);

使用它來保存您的更改,然后在saveConfig.php中使用json_decode($ _ POST)接收數據

<form action="#" class="hide-submit">
<div class="btn-configure step2button">
<span class="pcButtonText">
Save
</span>                                               
</div>

<ul id="radio" class="input-list">
  <li>
    <input id="item-1" name="config-prod" value="1.00" type="radio" onchange="updateTotal();">
    <label for="item-1">Item 1 [£1.00]</label>
  </li>
  <li>
    <input id="item-2" name="config-prod" value="12.34" type="radio" onchange="updateTotal();">
    <label for="item-2">Item 2 [£12.34]</label>
  </li>
  <li>
    <input id="item-3" name="config-prod" value="9.99" type="radio" onchange="updateTotal();">
    <label for="item-3">Item 3 [£9.99]</label>
  </li>
</ul>

<select id="plist" name="partlist" onchange="save();">
  <option value="99.99">CPU 1</option>
  <option value="123.00">CPU 2</option>
  <option value="250.54">CPU 3</option>
</select>
</form>
<br>
Total: <input id="total" type="text">

<script>
function save(){
    $.ajax({
        url : 'saveConfig.php',
        type: "POST",
        data: $('#form').serialize(),
        dataType: "JSON",
        success: function(data)
        {
            alert('saved');            
        },
        error: function (jqXHR, textStatus, errorThrown){
            alert(errorThrown);
        }
    });
}
</script>

否1:您已將Total: <input id="total" type="text">保留在</form>標記之外。 將其保留在</form>標記內。

No2:輸入字段<input id="total" type="text">缺少名稱屬性。 它應該像<input id="total" type="text" name="total">

希望這會起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM