对于问题(1) var hiddenFrm = document.forms['Login']; 取得了名为login的form的对象。
然后提交是通过 hiddenFrm.submit(); 对于问题(2) 提交的信息是通过用户写的信息,动态生成,先生成需要的标签
然后 hiddenFrm.elements['IDButton'].value = value; 赋值.
。不过按这个代码elmCount,始终是0。是不是漏贴了一部分.
然后提交是通过 hiddenFrm.submit(); 对于问题(2) 提交的信息是通过用户写的信息,动态生成,先生成需要的标签
然后 hiddenFrm.elements['IDButton'].value = value; 赋值.
。不过按这个代码elmCount,始终是0。是不是漏贴了一部分.
(2)这两天看过的表单提交都只有一个表单。这里有四个表单,我理解起来有些困难。前三个表单和login表单的关系是什么。
(3)frm1,frm2,frm3分别定义了一个口令输入控件,然后表单的onsubmit属性表示该表单在提交时,执行defaultSubmit(),return false又是什么意义。
(4)具体的提交流程是什么?能不能这么理解:网页最后post的数据是通过"Login"这个表单。这个表单的内容是通过用户输入动态生成的,通过submit按钮(makeupButton)提交。
呵呵...第一次接触这方面的知识,想通过这个例子彻底弄清楚。希望大家能领领路。:)
<html>
<head>
<title>Sun Java System Access Manager (Login)</title>
<link rel="stylesheet" href="/amserver/css/styles.css" type="text/css">
<script language="JavaScript" src="/amserver/js/browserVersion.js"></script>
<script language="JavaScript" src="/amserver/js/auth.js"></script>
<script language="JavaScript">
writeCSS('/amserver');
function pwdcheck(btnValue){
...}
var defaultBtn = 'Submit';
var elmCount = 0; /** submit form with default command button */
function defaultSubmit() {
LoginSubmit(defaultBtn);
} /**
* submit form with given button value
*
* @param value of button
*/
function LoginSubmit(value) {
if(pwdcheck(value)){
aggSubmit();
var hiddenFrm = document.forms['Login']; if (hiddenFrm != null) {
hiddenFrm.elements['IDButton'].value = value;
hiddenFrm.submit();
}
}
}</script>
<script type="text/javascript"><!--// Empty script so IE5.0 Windows will draw table and button borders
//-->
</script></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="9" marginwidth="9"
topmargin="9" marginheight="9" onload="placeCursorOnFirstElm();">
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <!-- branding -->
<tr>
<td width="110" bgcolor="#F7C102"> </td>
<td width="9" bgcolor="#F7C102"> </td>
<td valign="bottom" bgcolor="#F7C102" width="100%"><img src="/amserver/login_images/Identity_LogIn.gif" alt=""></td>
</tr>
<tr>
<td colspan="3"><img src="..." width="1"
height="39" alt=""></td>
</tr> <tr>
<td colspan="2"> </td>
<td width="100%">
<table border="0" cellspacing="0" cellpadding="0"> <!-- display authentication scheme -->
<tr>
<td colspan="2" width="140"> </td>
<td>
Change Password<BR></BR>Password must be reset.
</td>
</tr>
</table> <table border="0" cellspacing="0" cellpadding="0">
<tr><td colspan="3"> </td></tr>
<script language="javascript">
elmCount++;
</script>
<!---- end of tiledCallbacks ---->
<script language="javascript">
elmCount++;
</script>
<!---- password display ---->
<tr>
<form name="frm1" action="blank"
onSubmit="defaultSubmit(); return false;"> <td class="loginText" width="120">
<label for="IDToken1">
Old Password
</label>
</td> <td class="loginText" width="20"> </td>
<td class="loginText">
<input type="password" name="IDToken1"
id="IDToken1"
value="" size="20" maxlength="10">
</td>
</form>
</tr> <tr><td colspan="3"> </td></tr>
<!---- end of password ---->
<!---- end of tiledCallbacks ---->
<script language="javascript">
elmCount++;
</script> <!---- password display ---->
<tr>
<form name="frm2" action="blank"
onSubmit="defaultSubmit(); return false;"> <td class="loginText" width="120">
<label for="IDToken2">
New Password
</label>
</td> <td class="loginText" width="20"> </td>
<td class="loginText">
<input type="password" name="IDToken2"
id="IDToken2"
value="" size="20" maxlength="10">
</td>
</form>
</tr> <tr><td colspan="3"> </td></tr>
<!---- end of password ---->
<!---- end of tiledCallbacks ---->
<script language="javascript">
elmCount++;
</script> <!---- password display ---->
<tr>
<form name="frm3" action="blank"
onSubmit="defaultSubmit(); return false;"> <td class="loginText" width="120">
<label for="IDToken3">
Confirm Password
</label>
</td> <td class="loginText" width="20"> </td>
<td class="loginText">
<input type="password" name="IDToken3"
id="IDToken3"
value="" size="20" maxlength="10">
</td>
</form>
</tr> <tr><td colspan="3"> </td></tr>
<!---- end of password ---->
<!---- end of tiledCallbacks ---->
<script language="javascript">
elmCount++;
</script>
<!---- end of tiledCallbacks ---->
<!---- end of validContent ----->
<!-- Submit button --> <script language="javascript">
defaultBtn = ' Submit ';
</script> <tr>
<td colspan="2"> </td>
<td align="right">
<table border="0" cellpadding="2" cellspacing="0">
<tr>
<td>
<script language="javascript">
upButton(
' Submit ',
"javascript:LoginSubmit(' Submit ')");
</script>
</td>
<td>
<script language="javascript">
upButton(
' Cancel ',
"javascript:LoginSubmit(' Cancel ')");
</script>
</td>
</tr>
</table>
</td>
</tr> <!---- end of hasButton ---->
<!---- end of ContentButtonLogin ---->
</table>
</td>
</tr>
<tr>
<td colspan="3"><img src..." width="1"
height="57" alt=""></td>
</tr> <!-- copyrights -->
<tr>
<td width="110" align="right" valign="top"><img
src="..." width="52" height="83"
alt="Sun Java System Software"></td>
<td><img src="..." width="9" height="1"
alt=""></td>
<td valign="top" class="footerText">
</td>
</tr>
</table><form action="..." name="Login" method="post"><script language="javascript">
if (elmCount != null) {
for (var i = 0; i < elmCount; i++) {
document.write(
"<input name=\"IDToken" + i + "\" type=\"hidden\">");
}
document.write("<input name=\"IDButton" + "\" type=\"hidden\">");
}
</script>
<input type="hidden" name="goto" value="url here">
<input type="hidden" name="gx_charset" value="UTF-8"></form></body>
</html>
Old Password New Password Confirm Password也就是说它为每一个输入框单独定义了一个表单。
然后它实际提交的是
<form action="..." name="Login" method="post"> <script language="javascript">
if (elmCount != null) {
for (var i = 0; i < elmCount; i++) {
document.write(
" <input name=\"IDToken" + i + "\" type=\"hidden\">");
}
document.write(" <input name=\"IDButton" + "\" type=\"hidden\">");
}
</script>
<input type="hidden" name="goto" value="url here">
<input type="hidden" name="gx_charset" value="UTF-8"> </form> 这个表单
提交动作还真没有找到,貌似是利用回车来控制
实际编程中我post“IdToken1=...&IdToken2=...&IdToken3=...”到Login表单的action就可以了。就是不明白为什么自己做的环境不行....