2017-10-19 49 views
0

我被卡住了。我的公司正在重新設計它的網站,但我堅持嘗試在舊網站上進行修復以解決問題。我需要使用JavaScript或jQuery。如何使用JavaScript/jQuery在提交之前查看POST值

當提交表單時,POST鍵被髮送到以「selectedItem_」開頭的服務器,後面是項目ID。附在其上的值是按鈕「購買此」的文本。完整的關鍵字:值對看起來是這樣的:

selectedItem_IDME1KEXN_0_0 : "Buy This" 

由於形式有幾種不同版本的同一項目,誰編程這把表格上的幾個按鈕,每個按鈕用這種密鑰。所以可能有多達4個或5個幾乎相同的按鈕。分配給它們的值是actualy價格,像這樣:

selectedItem_IDME1KEXN_0_0 : 93.95 
selectedItem_IDME2KEXN_0_0 : 99.95 
selectedItem_IDME3KEXN_0_0 : 114.95 
selectedItem_IDME4KEXN_0_0 : 119.95 

所有這些都越來越發送到服務器,這是導致服​​務器有時會選擇錯誤的值。 (我不知道爲什麼它被編程這樣的,我只是想對付它!)

我的問題:

我如何使用JavaScript或者jQuery來評估什麼是目前存儲在後在它被髮送到服務器之前?我很想遍歷以「selectedItem_」開頭的鍵,並在發送之前將任何不正確的鍵取出。

+0

您沒有遠遠不夠的信息在你的問題,但是,可能會綁定到表單的'submit'事件,攔截正在提交的表單數據,甚至可能取消/阻止提交表單。順便說一句,關於StackOverflow的一個很好的問題顯示了你所嘗試過的東西(它被稱爲[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)) –

+0

另外 - 這聽起來像一個相當「企業「網站 - 你爲什麼堅持使用JavaScript?你不能修改服務器端代碼嗎? –

+0

@cale_b - 我很想修改服務器端代碼,但是所有的前端開發人員都致力於新的代碼庫。只有舊網站和舊代碼庫允許修復。 (呃) – cmdoc

回答

2

您可以將事件綁定到表單的submit事件,然後查看數據。

var $form = $('form').first(); 
 

 
$form.on('submit', function(e) { 
 
    e.preventDefault(); 
 
    console.log($form.serializeArray()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form method="POST" action=""> 
 
    <input type="text" name="key1" /> 
 
    <input type="text" name="key2" /> 
 
    <input type="submit" /> 
 
</form>

+0

謝謝!這至少讓我朝着正確的方向前進!讓我玩弄這個,看看我能做些什麼。 – cmdoc

+0

你的代碼絕對讓我指出了正確的方向。謝謝! – cmdoc

0

如果所有的數據都是從輸入標籤的形式,然後再嘗試這樣的事:

document.querySelector('form').addEventListener('submit', function (e) { 
    var input = document.querySelectorAll('input[name^="selectedItem_IDME"]'); 
    var valid = true; 
    for (var i = 0; i < input.length; i++) { 
     var item = input[i]; 
     if (Number(item.value) === 93.95) { 
      valid = false; 
      e.preventDefault(); 
     } 
    } 
}); 
+0

如果我正在處理靜態頁面,這可能會起作用。但是,所有的訂單都是根據當時庫存情況動態生成的,價格隨時可能變化。所以我的解決方案也必須是動態的。 – cmdoc

相關問題