如何用图片实现表单(form)的重置(reset)按钮

合理的运用图片,能够使站点更加丰富多彩,相信有许多喜欢用图片的设计师都遇到过一个问题:用图片实现表单(form)的重置(reset)按钮时,这个按钮并不能重置表单,相反却执行了提交表单的操作,本文说明了这个问题的原因,并给出了相应的解决方案。

出现上述问题的原因主要是:普通的按钮是通过类型来区分的,submit 为提交按钮,reset 为重置按钮,而类型为图片(type="image")的按钮,其默认操作是提交表单。因此,如果想用图片实现重置按钮,就需要一些额外的设置了。

如何用图片实现表单(form)的重置(reset)按钮 – 示例

一个简单包含提交、重置按钮的表单代码如下:

 
<form method="post" name="testForm_1" action="">
	<p><input type="text" name="keyword" /></p>
	<input type="submit" value="Submit" />
	<input type="reset" value="Reset" />
</form>

如果想用图片代替重置按钮,可以用下面的方法:

(1)给 type 为 image 的 input 添加 onclick 事件来实现重置,并通过添加 return false 来避免默认的提交操作:

 
<form method="post" name="testForm_2" action="">
	<p><input type="text" name="keyword" /></p>
	<input type="image" src="send.gif" />
	<input type="image" src="reset.gif" onclick="javascript:document.forms['testForm_2'].reset(); return false;" />
</form>

关键代码:

 
onclick="javascript:document.forms['testForm_2'].reset(); return false;"

document.forms[‘testForm_2′].reset(); 是将名称为 testForm_2 的表单重置。

return false; 是防止提交表单。

(2)直接用图片模拟的重置按钮

 
<form method="post" name="testForm_3" action="">
	<p><input type="text" name="keyword" /></p>
	<input type="image" src="send.gif" />
	<img src="reset.gif" alt="Reset" onclick="javascript:document.forms['testForm_3'].reset();" style="cursor:pointer;" />
</form>

关键代码:

 
onclick="javascript:document.forms['testForm_3'].reset(); "
 
style="cursor:pointer;"

document.forms[‘testForm_2′].reset(); 是将名称为 testForm_2 的表单重置。

style="cursor:pointer;" 设置图片悬停时,显示手型光标。

两种方法大同小异,在 javascript 被禁止的情况下,第二种方法按钮不会执行任何操作,而第一种方法却会执行提交操作。

当然,我们也可以直接把样式交给 CSS 去处理,用背景图的方式来实现,但是这样需要将 value 的值留空,如果 CSS 被禁止,那么将会显示一个没有文字的按钮,每个方法都有自己的问题,可以根据自己的需要来选择解决方案。

有初始值的 form 表单元素重置(reset)解决方案

有初始值的 form 表单在点击默认的 Reset 按钮时,表单元素并不能清空,而是恢复初始值,相信这并不是我们期望的,本文介绍的是用 javascript 解决这一问题的方法。

有初始值的 form 表单元素重置(reset)解决方案 – 示例

 
<script language="JavaScript" type="text/javascript">
<!--
// 说明:有初始值的 form 表单元素重置(reset)解决方案
// 整理:http://www.CodeBit.cn

function clearForm(formName) {
	var formObj = document.forms[formName];
	var formEl = formObj.elements;
	for (var i=0; i<formEl.length; i++)
	{
		var element = formEl[i];
		if (element.type == 'submit') { continue; }
		if (element.type == 'reset') { continue; }
		if (element.type == 'button') { continue; }
		if (element.type == 'hidden') { continue; }

		if (element.type == 'text') { element.value = ''; }
		if (element.type == 'textarea') { element.value = ''; }
		if (element.type == 'checkbox') { element.checked = false; }
		if (element.type == 'radio') { element.checked = false; }
		if (element.type == 'select-multiple') { element.selectedIndex = -1; }
		if (element.type == 'select-one') { element.selectedIndex = -1; }
	}
}
//-->
</script>

示例:

 
<form method="post" action="" name="testForm">

	<input type="text" value="text" size="30" /> <br />
	<textarea name="" rows="3" cols="30">textarea</textarea> <br />
	a<input type="checkBox" name="a" value="a" />
	b<input type="checkBox" name="a" value="b" checked="checked" />
	c<input type="checkBox" name="a" value="c" checked="checked" />
	d<input type="checkBox" name="a" value="d" />
	e<input type="checkBox" name="a" value="e" /> <br />
	2<input type="radio" name="b" value="2" />
	3<input type="radio" name="b" value="3" checked="checked" /><br />

	test1:<select name="" multiple="multiple">
		<option value="11111111">11111111</option>
		<option value="22222222" selected="selected">22222222</option>
		<option value="33333333" selected="selected">33333333</option>
		<option value="44444444">44444444</option>
		<option value="55555555">55555555</option>
	</select>

	<br /><br />

	test2:<select name="">
		<option value="11">11</option>
		<option selected="selected">22</option>
		<option value="33">33</option>
		<option value="44">44</option>
		<option value="55">55</option>
	</select>

	<br /><br />

	<input type="submit" value="Submit" />
	<input type="reset" value="Reset" />
	<input type="button" value="Button" />

	<input type="button" value="Javascript Clear" onclick="clearForm('testForm')" />

</form>