<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[form提交】onsubmit=false可以阻止表单提交]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 23 Sep 2009 10:19:01 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	转载自:http://www.javaeye.com/topic/5009<br/><br/>Ps：<br/>在onsubmit函数里加上一个documents.write会显不出来的，也就破坏了函数的意意。<br/><br/>众所周知，在表单中加上onsubmit=&quot;return false;&quot;可以阻止表单提交。 <br/>下面是简单的一小段代码： <br/><br/><br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code">&lt;form action=&quot;index.jsp&quot; method=&quot;post&quot; onsubmit=&quot;submitTest();&quot;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;INPUT value=&quot;www&quot;&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type=&quot;submit&quot; value=&quot;submit&quot;&gt; <br/>&lt;/form&gt; <br/><br/>&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt; <br/>&lt;!-- <br/>&nbsp;&nbsp;&nbsp;&nbsp;function submitTest() &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 一些逻辑判断 <br/>&nbsp;&nbsp;&nbsp;&nbsp; return false; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; <br/>//--&gt; <br/>&lt;/SCRIPT&gt;</div><br/> <br/><br/>大家判断像上面的写法，点击submit按钮该表单是否提交？ <br/><br/>若答案为是，就不用往下看了。 <br/><br/>若答案为否，错了。实际情况是表单正常提交，若想它不提交，应该将 <br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code">&lt;form action=&quot;index.jsp&quot; method=&quot;post&quot; onsubmit=&quot;submitTest();&quot;&gt;</div><br/> <br/>改为 <br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code">&lt;form action=&quot;index.jsp&quot; method=&quot;post&quot; onsubmit=&quot;return submitTest();&quot;&gt;</div><br/> <br/><br/><br/>为何？ <br/><br/>原来onsubmit属性就像是&lt;form&gt;这个html对象的一个方法名，其值（一字符串）就是其方法体，默认返回true； <br/><br/>和Java一样，在该方法体中你可以写任意多个语句，包括内置函数和自定义函数，如 <br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code">onsubmit=&quot; <br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(&#039;haha&#039;); // 内置函数 <br/>&nbsp;&nbsp;&nbsp;&nbsp;submitTest();&nbsp;&nbsp;// 自定义函数 <br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(this.tagName); // 用到了this关键词 <br/>&nbsp;&nbsp;&nbsp;&nbsp;......(任意多条语句)&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false; <br/>&quot;</div><br/> <br/><br/>就相当于 <br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code">Form.prototype.onsubmit = function() &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(&#039;haha&#039;); // 内置函数 <br/>&nbsp;&nbsp;&nbsp;&nbsp;submitTest();&nbsp;&nbsp;// 自定义函数 <br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(this.tagName); // 用到了this关键词 <br/>&nbsp;&nbsp;&nbsp;&nbsp;......(任意多条语句)&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false; <br/>&#125;;</div><br/> <br/><br/>这样的话你就覆写了(override)其默认方法（默认返回true） <br/>大家注意到方法体中可以用this这个关键词，这里即代表了&lt;form&gt;的对象实例。 <br/><br/>经过这样的分析后，以上情况就不难理解了： <br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code">&lt;form action=&quot;index.jsp&quot; method=&quot;post&quot; onsubmit=&quot;submitTest();&quot;&gt;</div><br/> <br/>这样写，override方法的效果为： <br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code">Form.prototype.onsubmit = function() &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;submitTest(); <br/>&#125;;<br/> </div><br/><br/>在这里submitTest()虽然返回false，但我们只执行了此函数，没有对其结果进行任何处理。而 <br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code">&lt;form action=&quot;index.jsp&quot; method=&quot;post&quot; onsubmit=&quot;return submitTest();&quot;&gt;<br/> </div><br/><br/>override方法的效果为： <br/>java代码:&nbsp;&nbsp;<br/><br/>Form.prototype.onsubmit = function() &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;return submitTest(); <br/>&#125;;<br/> <br/><br/>这样，我们利用到了它的返回值，达到了预期效果。 <br/>这样理解的话我想印象会深刻得多，就不易出错了 <br/><br/>结论： <br/>我 们可以用Java里的思维方式来思考模拟JavaScript中的类似情况（JavaScript中基于prototype的面向对象技术也确实是这样做 的），但他们毕竟还是有本质上的区别，如Java是强类型的，有严格的语法限制，而JavaScript是松散型的。象上述方法： <br/>java代码:&nbsp;&nbsp;<br/><br/><br/><div class="code"><br/>Form.prototype.onsubmit = function() &#123;&nbsp;&nbsp;<br/>&#125;;</div><br/> <br/><br/>既可以有返回值，又可以没有返回值，在Java里是通不过的，毕竟Java里面不能靠方法的返回值不同来重载(overload)方法，而JavaScript中的重载要松散得多.<br/><br/>比如一个页面里有两个form，如下：<br/><br/><br/><div class="code">&lt;form id=&quot;form1&quot; name=&quot;form1&quot; method=&quot;post&quot; action=&quot;http://127.0.0.1/&quot;&gt;<br/>&nbsp;&nbsp;&lt;input type=&quot;submit&quot; name=&quot;Submit2&quot; value=&quot;提交表单&quot; /&gt;<br/>&lt;/form&gt;</div><br/><br/><br/>&lt;form name=&quot;form2&quot;&nbsp;&nbsp;onsubmit=&quot;return false&quot;&gt;<br/>input name=&quot;&quot; type=&quot;submit&quot; value=&quot;提交&quot; onclick=&quot;bian()&quot; /&gt;<br/>&lt;/form&gt;<br/>两个form里分别有一个type为submit的按扭<br/><br/><br/>如果想按第二个按钮不想提交表单，只想执行bian()方法时，如果不用onsubmit=&quot;return false&quot;&gt;就达不到效果，就会提交表单了！<br/>而加上后就可以了！！ <br/><div class="code">onsubmit=&quot; <br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(&#039;haha&#039;); // 内置函数 <br/>&nbsp;&nbsp;&nbsp;&nbsp;submitTest();&nbsp;&nbsp;// 自定义函数 <br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(this.tagName); // 用到了this关键词 <br/>&nbsp;&nbsp;&nbsp;&nbsp;......(任意多条语句)&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false; <br/>&quot;</div><br/><br/><br/>jquery写法：<br/>function submituserinfocheck()<br/>&#123;<br/>&nbsp;&nbsp;alert(&quot;Hello the world...&quot;);<br/>&nbsp;&nbsp;if($(&#039;#FCollege&#039;).val()==&quot;&quot;)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;学校不能为空!&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&#039;#FCollege&#039;).focus();<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&#125; <br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;if($(&#039;#FNick&#039;).val()==&quot;&quot;)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;昵称不能为空!&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&#039;#FNick&#039;).focus();<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&#125;&nbsp;&nbsp; <br/>&nbsp;&nbsp;return true;<br/>&#125;<br/><br/><br/>再加上：<br/>document.forms[0].onsubmit = function()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&#125; <br/><br/>$(&quot;form#addForm&quot;).submit(function(evt)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;evt.preventDefault();<br/>&#125;);
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [form提交】onsubmit=false可以阻止表单提交]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>