运用javascript制作弹出式表单获取用户输入数据及验证的

有两个主题:

一是接收数据:The JavaScript prompt - Getting user input

二是验证数据:Create JavaScript Input Text Validation Fields

"javascript""input"为关健字在google中搜索到这个方法如下:

http://www.webdevelopersnotes.com/tutorials/javascript/javascript_prompt_visitor_inputs.php3

The JavaScript prompt - Getting user input


The JavaScript prompt - Getting user inputGo to The JavaScript prompt - Getting user inputJavaScript TutorialGo to JavaScript TutorialWeb Development TutorialsGo to Web Development TutorialsHomepage

The JavaScript prompt - Getting user input

Welcome mdx

In this session we'll look at the JavaScript prompt. The prompt() is a method of the window object, just like alert() or confirm().

The format for prompt() is similar to alert() or confirm() except for one addition.

prompt("Message", "default value in the text field");

In addition to the "OK" and "Cancel" buttons, a prompt box also has a text field that is employed for gathering visitor input. JavaScript lets you specify a default text for this text field. This is optional, that is you can construct a prompt() without specifing the default text. In such cases, JavaScript displays an ugly "undefined" value in the text field.

The information submitted by the visitor from prompt() can be stored in a variable, just as we had stored the value returned by confirm().

var name = prompt("What is your name", "Type you name here");

Once we have the value, we can write a customized greeting using document.write() as I have done or display an alert box.

var name = prompt("What is your name", "Type you name here");

alert("Hi " + name + "\nHope you are enjoying JavaScript!");

Click here to test the code.

It's important to remember that the value returned by prompt() and subsequently stored in a variable will always be a string data type. This is fine if you are dealing with text, but might present problems to the code if you plan to receive numeric data through prompt(). Javascript provides two functions to convert this string value to a numeric data type; parseInt() and parseFloat().

The parseInt() converts a string to an integer value while parseFloat() parses the string converting it to a floating point number.

Note: An integer is a whole number without any fractional part while floating-point numbers have a decimal part.

Now let's write a small script that takes a number from the visitor, checks whether its odd or even and displays the result through an alert box.

var n = prompt("Check your number", "Type your number here");

n = parseInt(n);

if (n == 0)

   {

   alert("The number is zero");

   }

else if (n%2)

   {

   alert("The number is odd");

   }

else

   {

   alert("The number is even");

   }

Click here to test the code

When parseInt() or parseFloat() encounter alphabet or any non-digit character, parsing (conversion) stops and the functions return NaN, which means Not a Number. The only way to test for NaN is to use isNaN() function.

We can make the code above more user-friendly by introducing one more if statement that checks for valid input.

var n = prompt("Check your number", "Type your number here");

n = parseInt(n);

if (isNaN(n))

   {

   alert("The input cannot be parsed to a number");

   }

else

   {

   if (n == 0)

      {

      alert("The number is zero");

      }

   else if (n%2)

      {

      alert("The number is odd");

      }

   else

      {

      alert("The number is even");

      }

   }

Click here to test the code.

Assignments

   1. With which object would you associate the prompt() method?

   2. Prompt() takes two arguments. Where are they displayed?

   3. The input from a prompt() is of which data type?

   4. What is the function of parseFloat() and parseInt()?

   5. What will be result if we send "abcd" through a prompt() input and pass it through parseInt()?

   6. What is the use of isNaN()?

如这是测试页面:


<HTML>

<HEAD>

<TITLE>JavaScript</TITLE>

<SCRIPT LANGUAGE="JAVASCRIPT" TYPE="TEXT/JAVASCRIPT">

<!--

//-->

var name = prompt("What is your name", "Type you name here");

alert("Hi " + name + "\nHope you are enjoying JavaScript!");

</SCRIPT>

</HEAD>

<BODY>

</BODY>

</HTML>

在javascript进行数据有效性的验证:

http://www.codeave.com/javascript/code.asp?u_log=100

Create JavaScript Input Text Validation Fields

Limit the amount of traffic and empty form fields submitted to your site by stopping blank user input before it leaves the client. Server side form validation isn’t always the best answer. Whenever possible it is best to eliminate as much unwanted input as possible. The following script writer aids in that goal. Simply enter the number of text input fields that you need to ensure are not containing blank information, the names of the elements and copy the output code into your document. (Note: Blanks will be converted to the underscore and the use of special characters or numerics as field names will mess up your resultant output)

示例代码:


<html>

<body>

<script Language="JavaScript">

<!--

function Blank_TextField_Validator(form)

{

if (form.password.value == "")

{

alert("Please fill in the password field.");

form.password.focus();

return (false);

}

return (true);

}

//-->

</script>

<form method="post" action="where_ever_you_want.htm"  onsubmit="return Blank_TextField_Validator(this)">

<p>

password

<br>

<input type="text" name="password" >

<br>

<input type="submit" value="Submit">

</form>

</body>

用DIV标签和CSS技术进行HTML网页设计(转帖2篇)

转自:http://www.blogjava.net/weidy/archive/2006/06/01/49766.html,标题有改变。

不能再等了,快把Table换成DIV吧

  用了四五年的Table排版,没觉得有什么不好,这一段时间迷上了Dojo,才发现如今已经到了不用DIV不行的年代。还是赶紧跟上潮流,把Table换成DIV吧! 改了几个页面,发现比想象的简单,更是尝到了用div的甜头。share自己一点浅浅的经验:

1. 先上网搜一下找点前人经验。推荐两篇好文:

  http://www.glish.com/css/                         "CSS Layout Techniques: for Fun and Profit"

  http://www.alistapart.com/articles/practicalcss   "Practical CSS Layout Tips, Tricks, & Techniques"   

2. 随便找几个用DIV+CSS实现,结构又比较简单的网站,研究一下它的页面结构和CSS。比如我就是主要看了下面几个网站:

      CSS禅花园          http://csszengarden.com/      

      Eclipse.org        http://www.eclipse.org/

      mozilla.com        http://www.mozilla.com/

作为世界上CSS高手比武的擂台,CSS禅花园的模板实在多的恐怖,以前都只站在欣赏的角度不觉得,自己研究起来,也就只能是挑了一两个看看,再感慨了一番作者真是好创意好美工。有趣的是Eclipse.org的首页居然基本用的都是mozilla.com的CSS,对比着这两个网站看更能看出端倪。

3.  自己上手干吧,让你的页面内容和显示样式彻底分离,其实并不难。

Forward on committed response错误

原来用struts1.1使用如下注释掉的代码一切正常,

 


if (target.equals("messageSuccess")) {

/*// changed Struts version from 1.1 to 1.2.9, this will generate error: Forward on committed response

PrintWriter out;

response.setContentType("text/html;charset=utf-8");

out = response.getWriter();

out.println(

"<script language=\"JavaScript\" type=\"text/javascript\">");

out.println("alert(\"感谢您对本站提出的宝贵意见和建议!回复见公告牌中的'回复网友留言集'。\")");

out.println("</script>");

out.flush();

*/

request.setAttribute("isMessage", "true");

}

换为struts1.2.9后就出现:Forward on committed response错误(Tomcat5.0控制台debug);在网站上运行resin2.1.12在页面上报错:

500 Servlet Exception

java.lang.IllegalStateException: forward() not allowed after buffer has

committed.

at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:131)

at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:103)

at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:80)

at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)

at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)

at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)

at com.learndiary.website.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:102)

at com.caucho.server.http.FilterChainFilter.doFilter(FilterChainFilter.java:88)

at com.caucho.server.http.Invocation.service(Invocation.java:315)

at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:346)

at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:274)

at com.caucho.server.TcpConnection.run(TcpConnection.java:139)

at java.lang.Thread.run(Thread.java:595)

--------------------------------------------------------------------------------

Resin 2.1.12 (built Tue Dec 9 14:58:25 PST 2003)

经过查资料,发现是PrintWriter已经返回用户数据后,就不能再forward到其它页面了。也就是这个错误:

forward should be called before the response has been committed to the client (before response body output has been flushed). If the response already has been committed, this method throws an IllegalStateException. Uncommitted output in the response buffer is automatically cleared before the forward. forward应当在响应提交给客户端之前调用(响应体输出被刷新前)。如果响应已经被提交,该方法抛出IllegalStateException。响应缓存中未提交的输出在转发之前自动清空。

所以就不在Action中写提示信息了,而把其移动jsp页面,如下:


  <c:if test="${requestScope['isMessage'] == true }">

   <script language="JavaScript" type="text/javascript">

    alert("感谢您对本站提出的宝贵意见和建议!回复见公告牌中的'回复网友留言集'。")

   </script>

  </c:if>

同时,我发现如果在Action中用的是request.setAttribute("isMessage", "true");

则在页面中可以  <c:if test="${requestScope['isMessage'] == true }">

注意,上面的“true”是没有加引号的,可能这就是c:if的boolean类型吧,我也没有去查资料;

但是,如果为:request.setAttribute("isMessage", "otherString");

则必须这样:  <c:if test="${requestScope['isMessage'] == \"otherString\"); }">

就是要加双引号,而且要进行转意。

谷歌的创新发动机与谷歌强大业界不安(转)

转自:http://tech.sina.com.cn/i/2006-05-24/1734954358.shtml,名字有所变化。

中国民航报:谷歌的创新发动机

--------------------------------------------------------------------------------

 

http://www.sina.com.cn 2006年05月24日 17:34 中国民航报

 

  □季 诺

  创新制胜。谷歌(Google)正在依靠其强大的创新能力,获取互联网时代的统治权。它的创新能力来自何处?是什么令它能够如此快速增长?

  10万元钱起家

   一切始于10年前的一个小搜索引擎。

  1996年,在斯坦福大学的校园网上出现了一个小搜索引擎。它的界面简单友好,服务器就设在学生宿舍里,名字也毫不起眼,叫作BackRub。这是谷歌创始人谢尔盖·布林和拉里·佩奇共同研究的成果。

  BackRub的工作原理是以全新的网络搜索系统为基础,根据被点击的频繁程度,对网络上的每一个链接加以排序,把访问量最高的文件排在首位。

  这个小工具便捷易用,随后在校内外开始流行起来。到1998年夏天,大约每天有1万人在使用BackRub。特别是在校园网里,它的搜索几乎占了整个校园网流量的一半,这在斯坦福引起了轰动。

  布林回忆说:“在某一时刻我不得不进行抉择:到底是创立自己的事业还是继续上学?”一个偶然的机会让布林作出了创业的决定。

  当布林向SUN公司创始人之一的恩迪·别赫托尔沙伊姆展示这个小搜索引擎时,后者打断了他:“这个非常有趣,但我要赶时间。您说您的公司名字叫什么?”边说边掏出支票本,几分钟后,就只剩下了目瞪口呆的布林和一张10万美元的支票了。支票上的名字属于一家还未开张的公司:谷歌有限股份公司。

  随后布林和佩奇递交了休学申请书,然后开始筹集资金,开办公司。1998年9月7日,谷歌公司注册成功,注册资金100万美元。

  带着宠物去上班

  公司成立不到半年之后,谷歌就被美国媒体发现,迅速成为媒体明星,其访问量也突飞猛进。2004年谷歌上市,布林和佩奇成为了风云人物。2005年,谷歌股价的飙升也使它成为华尔街的年度大事之一。公司股票市值将近1300亿美元,几乎与IBM不相上下,在科技行业仅次于微软和英特尔。这让谷歌的两位创始人当选为英国《金融时报》的年度人物。

  两位年轻的创始人以及谷歌管理层对创新的理解可能正在影响着谷歌的发展。以下是谷歌CEO埃立克·施密特与一位中国记者的对话:

  记者:埃立克,你能否描述一下10年后的谷歌是一家什么样的公司?

  埃立克:我不知道。

  记者:那你们没有战略规划吗?

  埃立克:没有。

  记者:谷歌的计划最多做到几年?

  埃立克:一年。

  记者:为什么?

  埃立克:因为变化。互联网是一个变化的行业,我们要随时做好改变的准备。

  与此同时,谷歌宽松自由的公司文化是其创新的发动机。谷歌的工作环境甚至已经成为一个话题。员工有20%的时间可以做自己想做的事情。在谷歌规模还不大时,它就成了硅谷唯一一家用期权招聘厨师的公司。谷歌每天为所有员工提供免费的三餐以及免费的医疗、牙医、美发、洗衣、干衣等服务;员工带到公司里的宠物也是五花八门;台球桌、桌上足球、按摩椅散布于办公室里;公司还随时有热咖啡供应,冰箱里有免费的各种饮料。

  李开复博士曾经撰文说,作为最成功的网络服务和网络产品提供商之一,谷歌公司从创立的那一天起就走上了一条与传统模式截然不同的创新之路。可以说,谷歌公司的创新模式在今天的IT产业中具有重要的典型意义:它既成功地解决了研究与开发脱节的问题,又在管理成本和研发效率上达到了最优。

  李开复说,研发过程中的平等参与是谷歌产品不断创新的另一块基石。谷歌在公司内部建立了拥有评比和排序机制的“点子库”。员工们可以将自己想到的产品或技术创意放到“点子库”里,然后由其他员工投票评选。公司从“点子排行榜”中选出未来的研发方向,并根据每个“点子”受欢迎的程度决定该项目的规模和重要性。对每个具体的项目,工程师们不仅可以在“点子库”中用手投票,还可以直接用“脚”投票,即亲身参与到该项目的研究与开发中去,与同事—起实现自己的技术梦想。

  强大到让人不安

  也许谁也没料到谷歌今天竟然如此让IT界感到不安。

  在谷歌建立起其创新帝国之前,IT业界已经接受大公司的统治达几十年之久。谷歌强大的创新能力,使其在短短几年时间里,超越旧的统治者,主宰了每个人的电脑。随着谷歌逐步走向成熟———它对行业的深远影响正慢慢显现出来。

  然而,除了早期的狂热和欢迎,如今人们对谷歌持有一种复杂而微妙的态度———担心它是“新微软”。《经济学家》杂志认为,这一比喻既是对谷歌的恭维,又带有一定的责备之意。恭维是因为谷歌已经成长为一家能决定其他技术公司经营和生存环境的公司,这恰恰正如大型机时代的IBM和个人电脑时代的微软。而责备则是因为,人们越来越担忧谷歌过于强大,会对IT业界产生不利影响。

  谷歌是不是变得过于强大了?其权力是不是太集中了?对使用搜索引擎的网民而言,谷歌为他们提供了一个进入互联网世界的绝妙导航机器;对依靠网络排名扩大营销的中小企业主来说,在谷歌搜索结果中的排名可能会决定企业的生死;对于微软、雅虎等竞争对手来说,谷歌正在让他们无法安睡。而那些小企业更是度日如年,因为一旦哪天谷歌决心进入他们今天赖以为生的地盘,他们就得随时准备卷铺盖回家或者盼望被谷歌购入门下。

  谷歌眼下还在四处出击,进行令人生畏的扩张,正像当年微软所做的那样。谷歌是新的微软吗?这将是未来IT业内一个有趣的新话题。

  (《中国民航报IT周刊》5月22日)

 

伊朗为什么一定要搞核计划(转)

转自:http://news.sina.com.cn/w/2006-05-17/14118950584s.shtml

德报解读:伊朗为什么一定要搞核计划?

--------------------------------------------------------------------------------

 

http://www.sina.com.cn 2006年05月17日14:11 新华网

 

  新华网消息:每一个了解核扩散历史的人都知道,所有拥有核武器的国家都是在与明确的敌人发生实际冲突的情况下决定发展这种武器。这种战略是否正确,这是历史学家们探讨的问题。但重要的一点是,没有一个国家把大量资源投入到核弹及其运载系统的建造中,不管存在实际的或主观想象的战略需要。那么伊朗的战略需要是什么?《德国金融时报》日前在一篇题为《伊朗的战略需要》的文章,对此做了解读: 

  美国发展核武器是用来对付日本, 因为当时日本似乎决心继续战斗若干年。后来苏联发展核武器是为了对死敌美国产生威慑作用。英国和法国发展核武器出于两个原因:为了维护其下降的大国地位和有自己的威慑力量对付苏联。

  在国王统治时期,伊朗总是担心美国(当时保护伊朗不受苏联侵犯的国家)可能中止对它的保护。自苏联帝国崩溃后,这样的威胁不再存在。

  但伊朗在上世纪90年代初决定发展核武器。需要用核弹对付的敌人是美国。上世纪80年代中期,霍梅尼主义小组曾在世界上30多个穆斯林国家积极活动,并与伊拉克进行了一场生存或毁灭的战争。德黑兰的领导人这时看到,有一个国家不允许他们出口革命和主宰中东。这个国家就是美国。

  现在,在阿富汗的塔利班和伊拉克的复兴党政权垮台后,中东原来的力量均势被打破了。那里需要建立新的平衡。美国总统布什打算建立一个民主和亲西方的新中东。 如果建立这样的中东,就不会有像德黑兰这样政权的立足之地。因此,伊朗决心坏布什的计划,并相反地建立一个反美的、伊斯兰主义的和受德黑兰控制的中东。

  从理论上讲,两种野心之间的冲突是不可避免的,即使不会马上爆发。霍梅尼主义的领导人相信,他们能够赢得任何使用常规武器的长期冲突,这仅仅是因为美国的公众没有耐心,不愿意接受哪怕是少量人的死伤。伊拉克的情况表明了这一点。

  美国想通过战争使伊朗屈服的惟一可能性在于使用战术核武器。因此毛拉们必须通过发展核威慑力量使自己具备反击美国的核优势的能力。毛拉们寄希望于,既不具备进行长期地面战争的能力又因担心遭到核报复而不能使用核武器的美国,会像它通常所做的那样一走了之,这样伊朗就能成为地区的超级大国。

  因此,把伊朗的核努力仅仅视作“发疯的毛拉们”的狂妄野心是错误的。中东正在经历自1918年奥斯曼帝国崩溃以来最重要的阶段。

  各种选择是清楚的。一种选择是允许霍梅尼主义的政权主宰中东并把中东作为一个“伊斯兰超级大国”谋求全球统治地位的基地。另一种选择是把力争德黑兰的政权更迭作为战略目标。还有一种选择,可能就是伊朗和美国在中东共管。 (完)

  新华网消息 原本定于本周五(5月19日)举行的美国、俄罗斯、中国、英国、法国和德国的代表伦敦会议可能会推迟到下周召开,以便美国、俄罗斯、和中国的高级官员通过电话消除如在激励内容和伊朗所应受到惩罚等问题上的分歧。

  据美联社报道,欧洲国家正在酝酿一座包括向伊朗提供轻水反应堆的一揽子激励方案,以劝说伊朗放弃铀浓缩计划,否则将面临安理会对其实现制裁。

  新京报 5月16日,英国媒体披露说,美国国防部官员证实,如果国际外交努力未能取得效果,美国准备改进对伊朗发动打击的应急作战计划。

  据报道,美国战略策划人员已提交了两个使用B-2隐形轰炸机对伊朗实施精确打击的方案。两套方案都建议动用美国密苏里州怀特曼空军基地、太平洋关岛的安德森空军基地、印度洋的迪戈加西亚空军基地作为B-2隐形轰炸机的起飞点。英国皇家空军设在格洛斯特的费尔福特空军基地也有供B-2轰炸机起降的设施,但由于英国不赞成对伊朗动武,美国不打算动用该空军基地。

  新华网 华盛顿5月16日电 美国白宫发言人斯诺16日在新闻发布会上对欧盟拟向伊朗提供轻水反应堆以换取伊朗中止铀浓缩活动的做法反应冷淡,强调无论如何伊朗都必须首先放弃研制核武器的计划。

 

端午节感受:包子如山,粽子如林

端午早上照例到小店去吃饭。结果没有座位和桌子了。桌子堆满如山的包子,旁边又有密密麻麻如山的粽子。啊,今天是端午节,我突然想起来了。

老板说在给一个厂赶制发给职工的包子,要2000个!

端午早上吃的是包子,中午吃的是稀饭包子,晚上又尝了粽子。

不知怎的,我觉得今年这个端午节特别有味。

上午,孩子到幼儿园庆祝六一跳舞,她妈妈不上班带上我的手机去拍照,她的手机没买数据连线,无法输入电脑。

今天是六一节,记录一下昨天端午的感受。

IT世界的第四个时代

  今天,看电脑报有篇文章说IT世界的第四个时代是无线互联,我表示同意。

  文中说的4个时代为:

  1、IBM的制造业时代;

  2、微软的软件时代;

  3、GOOGLE等的网络时代;

  4、正在到来的无线互联时代;

GPRS连不上的两次情况和不能收短信的情况

一是刚开通GPRS服务连不上。服务人员说关机重启,解决问题。

(另外,如果你不想联上网,拒绝一些不请自来的网络联接请求,可以把网络设置的GPRS连结点从正常的cmwap修改成错误的如cmwapp,这样无论怎样你都不会联上网的。还有,移动的wap 5元包月仅征对cmwap连接,如果把连结修改为cmnet就要额外收费了,好像是1分钱1kb。听说cmnet是直接可以联入internet的,但是可能是我的机子不行(sed890),没试成功过)

这次是把手机上的GPRS计数器清空后,关机重启解决问题,也不知道是巧合还是真的。

还有一次短信满了好像不能收短信了,清空短信解决。