2014-12-02 61 views
0

我在JavaScript很新的,我有關於究竟是如何工作的這個腳本,提交表單以下疑問:這個表單提交JavaScript的確切工作是什麼?

所以在我的HTML我有以下形式:

<form id="actionButton<%=salDettaglio.getCodice()%>" action="salwf.do?serv=1" method="post"> 
    <button id="accept" name="ctrl" value="Accept" type="submit" class="acceptButton" onclick="sottometti(this,'<%=salDettaglio.getCodice()%>')">ACCEPT ICON BUTTON</button> 
    <button id="cancel" name="ctrl" value="Cancel" type="submit" class="cancelButton" onclick="sottometti(this)">CANCEL ICON BUTTON</button> 
    <button id="sap" name="ctrl" value="SAP" type="submit" class="sapButton" onclick="sottometti(this)">SAP ICON BUTTON</button> 

    <input id="testId<%=salDettaglio.getCodice()%>" name="test" type="hidden"> 
</form> 

所以提交這種形式被引向一個頁面salwf.do並且每次通過一個名爲SERV和具有參數作爲值(這是一個GET?)

Ť表格內母雞我有3個按鈕具有不同ID和不同輸入標籤(我認爲這就是我提交,是不是?)

正如你所看到的當上的按鈕,用戶點擊稱爲sottometti(本)腳本,取作爲參數參照已生成的點擊對象(在此情況下,點擊按鈕)

這是此JavaScript代碼:

function sottometti(obj,id){ 
    document.getElementById('testId'+id).value = obj.value; 
    document.getElementById('actionButton'+id).submit() 
} 

那麼究竟怎樣工作的這個腳本?

我認爲它做以下事情(但我不知道這件事,也許我失去了一些東西)。

它以2個輸入參數:所點擊的按鈕參考(OBJ)和ID字符串(即表示的Java對象的代碼,但現在這並不重要)。

使用:

document.getElementById('testId'+id) 

它檢索形式的輸入標籤的參考和使用按鈕值(設定值(我想提出的),可以是:接受取消樹液

然後,通過:

document.getElementById('actionButton'+id) 

找回我的表格,並提交

所以點擊按鈕的值將作爲POST提交salwf.do的servlet。

這是我的推理正確的還是我失去了一些東西?

Tnx

回答

1

是的,你的推理是正確的,但你有一些問題。

  1. 你只能從其中一個按鈕通過ID - 在接受一個
  2. 對於你似乎要添加接受/取消/ SAP到名爲testAccept,testCancel或testSAP隱藏字段,並提交所有按鈕形式與ID actionButtonAccept,actionButtonCancel,actionButtonSAP但沒有字段也沒有在取消/ SAP情況下的表單。
  3. 不的點擊事件提交提交按鈕

我會做

function sottometti(obj){ 
    obj.form.test.value = obj.value; 
    // obj.form.submit(); // all the buttons are submit buttons 
} 
+0

我能有什麼樣的問題? – AndreaNobili 2014-12-02 13:43:23

+0

查看更新...... – mplungjan 2014-12-02 14:05:10

1

注意的一兩件事。在這裏,您將JavaScript附加到按鈕[type = submit]並執行表單提交。所以實際上你提交了兩次。

如果你想阻止提交你至少應該在回調函數返回false(最好是無論如何使用event.preventDefault();)喜歡在這個問題的答案https://stackoverflow.com/a/23646215/2802756

相關問題