[英]Prevent function loading again in form when submit
我有一個通過 JavaScript 形式的函數 tablekrw() 創建的動態表。 該表加載了一些默認值並在我的頁面上創建了 200 個空表行。 提交時,表值存儲在數據庫中。 但是現在,當我按下提交時,我得到了表中值的兩倍。
我的最小 HTML 代碼:
if (isset($_POST["submit"])) {
$insert->Insert();
<form>
<table id="table1" class="table table-sw table-bordered">
<tr id="tablehead">
<th>Sw</th>
<th>Krw</th>
</tr>
<tbody id="tablekrw">
<script>
tableKrw();
</script><
/tbody>
<tbody>
<tr><td><label></label></td></tr>
<tr><td><button type="button" id="empty1">Empty Sw Krw table</button></td></tr>
</tbody>
</table>
<tr>
<td>
<input class="btn btn-primary" type="submit" value="Submit" name="submit">
</td>
</tr>
</form>
功能:
function tableKrw() {
$('document').ready(function (e) {
$('#tablekrw').append('<table></table>');
var tr = $('#tablekrw').children();
tr.append('<tr><td><input type="text" class="td-sw" name="sw1[]" value="0.15" id="default-td">' +
'</td><td><input class="td-sw" type="text" name="krw[]" value="0.0"></td> </tr>');
for (let i = 0; i < 200; i++) {
tr.append('<tr> <td><input type="text" class="td-sw" name="sw1[]" id="default-td">' +
'</td><td><input class="td-sw" type="text" name="krw[]"></td> </tr>');
}
標准值 0.15 和 0.0 現在存儲在數據庫中: 0.15 0.0 0.15 0.0
如何防止將值存儲兩次? 我嘗試使用 preventdefault,但這沒有用。
插入()代碼:
$this->lastId = $db->lastInsertId();
$sql = "insert into unsteady_state_table_krw (sw1, krw, us_id) values (:sw1, :krw, :us_id)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':sw1', $this->sw1);
$stmt->bindParam(':krw', $this->krw);
$stmt->bindParam(':us_id', $this->lastId);
foreach ($_POST['sw1'] as $key => $value) {
if (!empty($_POST['sw1'][$key]) && ($_POST['krw'][$key])) {
$this->sw1 = $_POST['sw1'][$key];
$this->krw = $_POST['krw'][$key];
$stmt->execute();
每次 DOM 准備就緒時,您似乎都在創建行。 您可以通過在作業完成后在 sessionStorage 或 localStorage 中存儲一個值來檢查這一點,例如在再次追加所有行之前:
if (typeof localStorage.rowsAlreadyCreated === 'undefined') {
tableKrw();
localStorage.rowsAlreadyCreated = 1;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.