我有了兩個提交按鈕的表單手動提交表單。我想使用JavaScript手動提交表單,並使用輸入按鈕將表單提交與其他表單元素一起提交,就像表單自動提交一樣。關於這個問題有很多討論,但我找不到答案。使用JavaScript不會發送提交按鈕
<form method="post" action="echoToScreenAndLog.jsp" id="form1">
<input id="field1" name="field1"/>
<input type="text" size="20" id="field2" name="field2"/>
<input type="submit" value="Do One" name="sub1_name" id="sub1_id"/>
<input type="submit" value="Do Two" name="sub2_name" id="sub2_id"/>
</form>
當窗體上方用「做一」按鈕提交,張貼的參數是field1="xxx"
,field2="yyy"
,sub1_name="Do One"
。
但我想手動提交表單...
<form method="post" action="echoToScreenAndLog.jsp" id="form1">
<input id="field1" name="field1"/>
<input type="text" size="20" id="field2" name="field2"/>
<input type="submit" value="Do One" name="sub1_name" id="sub1_id"/>
<input type="submit" value="Do Two" name="sub2_name" id="sub2_id"/>
</form>
<script type="text/javascript">
var btn = document.getElementById('sub1_id');
btn.onclick=function() {
return mySubmit(document.getElementById('form1'), ...);
}
</script>
但在mySubmit
功能做手工提交表單不發佈sub1_name
參數。我可以理解 - 我已經繞過了提交,所以表單沒有使用按鈕提交,因此發佈代表用於提交表單的按鈕的參數是沒有意義的。
當我看形式在onclick
處理程序中的元素,我可以看到兩個按鈕。我不是由過於驚訝要麼,他們畢竟是在表單上的元素,但我不明白的是,如果我加我onclick
處理程序中的元素,然後我添加的元素張貼和兩個原始提交按鈕沒有發佈。剛剛完成的圖片,下面是添加元素的代碼:
<script type="text/javascript">
var btn = document.getElementById('sub1_id');
btn.onclick=function() {
var f = document.getElementById('form1');
var s = document.createElement("input");
s.type="hidden"; s.name="xsubmit_name"; s.value="Bob"; s.id="xsubmit_id";
f.appendChild(s);
// s gets posted
return mySubmit(f, ...);
}
</script>
添加輸入元素可以爲我工作,但我很困惑的瀏覽器是如何知道後我添加的元素,而不是原來的兩個輸入元素。
謝謝。
f是隻是一個指針的形式,從而更新結轉。您只需捕捉觸發您的功能的按鈕並將其放入元素中即可。爲什麼你會擔心添加自定義提交呢?我認爲你可以嘗試添加一個onclick方法,它會返回true或false,從而決定天氣或不按照默認方法提交數據,只是在那裏檢查數據,並將實際提交的內容留給瀏覽器。希望這可以起作用,至少對於它的超鏈接。 – ted 2011-12-20 12:47:38
'mySubmit'到底做了什麼?任何原因你不能使用表單的'onsubmit'並且在你做了你需要在腳本中做的每一件事情之後讓表單正常提交? – RoToRa 2011-12-20 12:49:10