﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-lycong-随笔分类-JavaScript</title><link>http://www.blogjava.net/lycong/category/34406.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 04 Sep 2008 17:59:00 GMT</lastBuildDate><pubDate>Thu, 04 Sep 2008 17:59:00 GMT</pubDate><ttl>60</ttl><item><title>经常碰到的模块：修改密码 一 安全小技巧（服务器后台不返回密码）</title><link>http://www.blogjava.net/lycong/archive/2008/07/06/212428.html</link><dc:creator>cong</dc:creator><author>cong</author><pubDate>Sun, 06 Jul 2008 12:14:00 GMT</pubDate><guid>http://www.blogjava.net/lycong/archive/2008/07/06/212428.html</guid><wfw:comment>http://www.blogjava.net/lycong/comments/212428.html</wfw:comment><comments>http://www.blogjava.net/lycong/archive/2008/07/06/212428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lycong/comments/commentRss/212428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lycong/services/trackbacks/212428.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 问题如下：当修改密码时，为了防止通过查看html源文件或其他方法看到用户的原始密码，一般服务器不会返回用户密码，可以利用javascript的技巧 ，在页面显示一虚假密码，然后判断密码是否修改过，如果真有修改过密码，才把密码送到后台服务器，否则不发送密码到后台服务器。 <br />
1. 页面显示代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&lt;%--</span><span style="color: #000000">构造一个虚假的密码显示框</span><span style="color: #000000">--%&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">fmt:message&nbsp;key</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">falsity_password_defaultValue</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">falsity_password_defaultValue</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">falsity_password</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">password</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">falsity_password</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">default</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${falsity_password_defaultValue}</span><span style="color: #000000">"</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${fn:escapeXml(param.falsity_password&nbsp;!=&nbsp;null&nbsp;?&nbsp;param.falsity_password&nbsp;:&nbsp;falsity_password_defaultValue)}</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;autocomplete</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">off</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">true_password</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hidden</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">password</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
其中 falsity_password_defaultValue 为服务器端事先设置好的虚假密码（可以在资源文件中设置）， falsity_password 为页面显示的虚假密码，true_password 是当密码修改后，才发送到服务器， 下面就会对上面2个变量值作一些处理判断。<br />
<br />
2. 对是否修改过密码进行处理。<br />
A.当focus到密码框时，密码框清空， 到没有修改过密码就离开密码框时，就还原为虚假密码显示.<br />
B.当修改过密码后，就会把true_password的值设置为修改后的值。<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;!--</span><span style="color: #000000"><br />
<img id="Codehighlighter1_65_519_Open_Image" onclick="this.style.display='none'; Codehighlighter1_65_519_Open_Text.style.display='none'; Codehighlighter1_65_519_Closed_Image.style.display='inline'; Codehighlighter1_65_519_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_65_519_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_65_519_Closed_Text.style.display='none'; Codehighlighter1_65_519_Open_Image.style.display='inline'; Codehighlighter1_65_519_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;getTruePassword()</span><span id="Codehighlighter1_65_519_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_65_519_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">c:</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;test</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${param.edit&nbsp;==&nbsp;'modify'}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;falsity_password&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">falsity_password</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;true_password&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">true_password</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_301_503_Open_Image" onclick="this.style.display='none'; Codehighlighter1_301_503_Open_Text.style.display='none'; Codehighlighter1_301_503_Closed_Image.style.display='inline'; Codehighlighter1_301_503_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_301_503_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_301_503_Closed_Text.style.display='none'; Codehighlighter1_301_503_Open_Image.style.display='inline'; Codehighlighter1_301_503_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(falsity_password&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;true_password)</span><span id="Codehighlighter1_301_503_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_301_503_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;defaultValue</span><span style="color: #000000">=</span><span style="color: #000000">falsity_password.getAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">default</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_422_495_Open_Image" onclick="this.style.display='none'; Codehighlighter1_422_495_Open_Text.style.display='none'; Codehighlighter1_422_495_Closed_Image.style.display='inline'; Codehighlighter1_422_495_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_422_495_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_422_495_Closed_Text.style.display='none'; Codehighlighter1_422_495_Open_Image.style.display='inline'; Codehighlighter1_422_495_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(falsity_password.value&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;defaultValue)&nbsp;</span><span id="Codehighlighter1_422_495_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_422_495_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true_password.value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;falsity_password.value;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">c:</span><span style="color: #0000ff">if</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">c:</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;test</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${param.edit&nbsp;==&nbsp;'modify'}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;falsity_passwordNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">falsity_password</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_664_1042_Open_Image" onclick="this.style.display='none'; Codehighlighter1_664_1042_Open_Text.style.display='none'; Codehighlighter1_664_1042_Closed_Image.style.display='inline'; Codehighlighter1_664_1042_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_664_1042_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_664_1042_Closed_Text.style.display='none'; Codehighlighter1_664_1042_Open_Image.style.display='inline'; Codehighlighter1_664_1042_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(falsity_passwordNode)&nbsp;</span><span id="Codehighlighter1_664_1042_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_664_1042_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_708_1036_Open_Image" onclick="this.style.display='none'; Codehighlighter1_708_1036_Open_Text.style.display='none'; Codehighlighter1_708_1036_Closed_Image.style.display='inline'; Codehighlighter1_708_1036_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_708_1036_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_708_1036_Closed_Text.style.display='none'; Codehighlighter1_708_1036_Open_Image.style.display='inline'; Codehighlighter1_708_1036_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object.extend(falsity_passwordNode,&nbsp;</span><span id="Codehighlighter1_708_1036_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_708_1036_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_741_868_Open_Image" onclick="this.style.display='none'; Codehighlighter1_741_868_Open_Text.style.display='none'; Codehighlighter1_741_868_Closed_Image.style.display='inline'; Codehighlighter1_741_868_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_741_868_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_741_868_Closed_Text.style.display='none'; Codehighlighter1_741_868_Open_Image.style.display='inline'; Codehighlighter1_741_868_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onfocus&nbsp;:&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;</span><span id="Codehighlighter1_741_868_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_741_868_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_805_856_Open_Image" onclick="this.style.display='none'; Codehighlighter1_805_856_Open_Text.style.display='none'; Codehighlighter1_805_856_Closed_Image.style.display='inline'; Codehighlighter1_805_856_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_805_856_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_805_856_Closed_Text.style.display='none'; Codehighlighter1_805_856_Open_Image.style.display='inline'; Codehighlighter1_805_856_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">this</span><span style="color: #000000">.value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">default</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;</span><span id="Codehighlighter1_805_856_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_805_856_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'';<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">,<br />
<img id="Codehighlighter1_901_1028_Open_Image" onclick="this.style.display='none'; Codehighlighter1_901_1028_Open_Text.style.display='none'; Codehighlighter1_901_1028_Closed_Image.style.display='inline'; Codehighlighter1_901_1028_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_901_1028_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_901_1028_Closed_Text.style.display='none'; Codehighlighter1_901_1028_Open_Image.style.display='inline'; Codehighlighter1_901_1028_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onblur&nbsp;:&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;</span><span id="Codehighlighter1_901_1028_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_901_1028_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_939_1016_Open_Image" onclick="this.style.display='none'; Codehighlighter1_939_1016_Open_Text.style.display='none'; Codehighlighter1_939_1016_Closed_Image.style.display='inline'; Codehighlighter1_939_1016_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_939_1016_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_939_1016_Closed_Text.style.display='none'; Codehighlighter1_939_1016_Open_Image.style.display='inline'; Codehighlighter1_939_1016_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">this</span><span style="color: #000000">.value&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;'')&nbsp;</span><span id="Codehighlighter1_939_1016_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_939_1016_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">default</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">)<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">c:</span><span style="color: #0000ff">if</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">--&gt;&lt;/script&gt;</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
判断falsity_password密码是否为虚假密码，若不是，则把true_password设置为修改过的密码。<br />
<br />
<br />
3.服务器端要判断是否修改过密码，若修改过才把密码传到后台进行修改，这里主要看true_password是否为" ",若不为" "，则说明密码修改过。<br />
这里可以通过tag来进行处理<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;</span><span style="color: #000000">c:</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;test</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${!empty&nbsp;param.true_password}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img id="Codehighlighter1_44_75_Open_Image" onclick="this.style.display='none'; Codehighlighter1_44_75_Open_Text.style.display='none'; Codehighlighter1_44_75_Closed_Image.style.display='inline'; Codehighlighter1_44_75_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_44_75_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_44_75_Closed_Text.style.display='none'; Codehighlighter1_44_75_Open_Image.style.display='inline'; Codehighlighter1_44_75_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_44_75_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_44_75_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;把true_password&nbsp;传到后台进行修改&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">c:</span><span style="color: #0000ff">if</span><span style="color: #000000">&gt;</span></div>
<br />
<br />
 <img src ="http://www.blogjava.net/lycong/aggbug/212428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lycong/" target="_blank">cong</a> 2008-07-06 20:14 <a href="http://www.blogjava.net/lycong/archive/2008/07/06/212428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fix 问题： 进入编辑页面，当点击其他地方时，判断页面是否修改过，并提示相关信息。</title><link>http://www.blogjava.net/lycong/archive/2008/06/16/207189.html</link><dc:creator>cong</dc:creator><author>cong</author><pubDate>Mon, 16 Jun 2008 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/lycong/archive/2008/06/16/207189.html</guid><wfw:comment>http://www.blogjava.net/lycong/comments/207189.html</wfw:comment><comments>http://www.blogjava.net/lycong/archive/2008/06/16/207189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lycong/comments/commentRss/207189.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lycong/services/trackbacks/207189.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;问题如下：例如要修改某个人的信息时，进入编辑页面，当点击其他地方时，判断信息是否已被修改过，并提示相关信息。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本例中以个人通讯录信息为背景， 解决方法如下：1.首先要有个 Object保存 一开始时从服...&nbsp;&nbsp;<a href='http://www.blogjava.net/lycong/archive/2008/06/16/207189.html'>阅读全文</a><img src ="http://www.blogjava.net/lycong/aggbug/207189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lycong/" target="_blank">cong</a> 2008-06-16 21:50 <a href="http://www.blogjava.net/lycong/archive/2008/06/16/207189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于text文本框 按回车键 何种情况下 submit-------- 从一个bugfix 问题中想到</title><link>http://www.blogjava.net/lycong/archive/2008/05/28/203635.html</link><dc:creator>cong</dc:creator><author>cong</author><pubDate>Wed, 28 May 2008 13:03:00 GMT</pubDate><guid>http://www.blogjava.net/lycong/archive/2008/05/28/203635.html</guid><wfw:comment>http://www.blogjava.net/lycong/comments/203635.html</wfw:comment><comments>http://www.blogjava.net/lycong/archive/2008/05/28/203635.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/lycong/comments/commentRss/203635.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lycong/services/trackbacks/203635.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt">接到一个问题，大概描述如下：<strong>页面有一text文本框，有一submit类型的按钮，输入内容后，按回车页面只是刷新一下，但是没有执行创建操作。而且文件夹名有如下限制：不能和之前创建文件夹同名，且非空。</strong>jsp中的内容简化为如下：</span><span style="font-size: 24pt">&nbsp;<br />
<span style="font-size: 18pt; color: #000000"><strong><span style="font-size: 12pt"><span style="color: #000000"><strong><span style="font-size: 14pt"><span style="color: #000000"><strong><span style="color: #000000"><strong><br />
&lt;form&gt; &lt;tr&gt;<br />
&nbsp;&lt;td&gt;&lt;input type="text" id="filename" /&gt; &lt;/td&gt; <br />
&lt;td&gt;&lt;input type="submit" onclick="return addFile();"&nbsp; id="sub"/&gt; &lt;/td&gt;<br />
&lt;/tr&gt; &lt;/form&gt;</strong></span><br />
</strong></span></span></strong></span></span><br />
</strong><span style="font-size: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中addFile()函数会有上面提及到限制判断，并且会返回boolean类型，当然符合条件时就返回true，不符合就返回false。理所当然当输入内容后点击submit按钮会正常执行相关操作而且会正常执行限制判断。可是奇怪的是，在IE下 在text框输入内容后直接按回车确不能执行相关操作，只是页面刷新了一下， 但是在FIREFOX下 按回车却能正常执行操作和判断。 之前第一时间就是想到应该在text文本框中加一个onkeydown的事件enter_file()，enter_file函数是当按下回车时就执行，并且函数中应该有这句代码 document.getElementById('sub').click(); 就是说当回车时就执行submit按钮的click操作。 貌似应该会正常执行操作的吧，可是又一奇怪问题出现了，<strong style="color: red">就是在IE下，在文本框中输入 a 后（假设之前没有文件名为a的文件），然后快速按2下（更多下也可以），结果会跳过&#8220;不能创建重复文件名&#8221;的判断，创建出2个相同名字a 的文件夹，而且例如输入同名文件名后，弹出框会一闪而过，不会等点击确认后才退出弹出框，</strong>但是在FIREFOX下却是正常执行，也不会出现一闪而过的现象，就是快速按几下也只是创建一个文件夹a。 之后百思不得其解，试过一些方法，比如把submit类型改为button类型，把onkeydown事件换成onkeypress或者onkeyup ，结果还是出现IE下快速按回车 创建2个同名文件夹，还是出现一闪而过的现象。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 初步判断可能是ie和ff在text框按回车的响应不同，最后上网搜了一下，找到一个帖子 名为求解一个关于回车的问题 <a href="http://topic.csdn.net/t/20061128/14/5191186.html">http://topic.csdn.net/t/20061128/14/5191186.html</a>&nbsp;，具体内容到那个帖子看看。抽取其中值得注意的地方如下：<br />
&nbsp;&nbsp; IE：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp; 1. &nbsp; 只有一个text框时，（不管有没有submit），直接触发onsubmit &nbsp; (form标签的一事件属性)<br />
&nbsp; 2. &nbsp; 有多个text框时，触发submit上的onclick，其默认行为为触发onsubmit。&nbsp;&nbsp; <br />
<br />
相对来说，ff的行为最复杂。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp; 1. &nbsp; 有submit或button时，触发submit或button的onclick，然后该onclick的默认行为会触发onsubmit。 &nbsp; <br />
&nbsp; 2. &nbsp; 没有submit或button时， &nbsp; <br />
&nbsp; 2.1 &nbsp; 只有一个text框时，触发onsubmit； &nbsp; <br />
&nbsp; 2.2 &nbsp; 有多个text框时，不触发onsubmit。&nbsp;&nbsp;<br />
<br />
因为看到当只有一个text框时，直接触发onsubmit，就联想到要在form标签中加上onsubmit事件，于是把上面的代码改为如下：<br />
<span style="font-size: 18pt; color: #000000"><strong style="font-size: 14pt">&lt;form onsubmit="return addFile()"&gt; &lt;tr&gt;<br />
&nbsp;&lt;td&gt;&lt;input type="text" id="filename" /&gt; &lt;/td&gt; <br />
&lt;td&gt;&lt;input type="submit" id="sub"/&gt; &lt;/td&gt;<br />
&lt;/tr&gt; &lt;/form&gt;<br />
</strong></span>结果在IE下终于能成功操作，即是快速按几下也只是创建一个文件夹，并且不在出现一闪而过的现象。 因此很多时候在IE下可能出现奇怪问题，换作FF下就没问题了，Firefox支持JavaScript是正宗的。另外用firefox的插件 firedebug 来调试 javascript 程序 简直太爽了。<img height="20" alt="" src="http://www.blogjava.net/Emoticons/QQ/05.gif" width="20" border="0" /><br />
<br />
</span><br />
<br />
<br />
</span></span></p>
 <img src ="http://www.blogjava.net/lycong/aggbug/203635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lycong/" target="_blank">cong</a> 2008-05-28 21:03 <a href="http://www.blogjava.net/lycong/archive/2008/05/28/203635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>