`
pdreamer
  • 浏览: 55812 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

我佛山人 微变版

阅读更多
Validator表单验证类使用说明

这个http://jquery.bassistance.de/validate/demo/比卧佛山人思路更好一点,

 js由"我佛山人" v1.05验证框架稍作改动而得,文档说明俺没动过。如要寻根,请找 “我佛山人 v1.05”


表单的验证一直是网页设计者头痛的问题,我佛山人编写的表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于网页的设计和功能上的改进上。 Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。因为是伪静态类,所以在调用时不需要实例化,直接以"类名+.语法+属性或方法名"来调用。此外,Validator还提供3种不同的错误提示模式,以满足不同的需要。
Validator目前可实现的验证类型有:
1.是否为空;
2.中文字符;
3.双字节字符
4.英文;
5.数字;
6.整数;
7.实数;
8.Email地址;
9.使用HTTP协议的网址;
10.电话号码;
11.货币;
12.手机号码;
13.邮政编码;
14.身份证号码(1.05增强);
15.QQ号码;
16.日期;
17.符合安全规则的密码;
18.某项的重复值;
19.两数的关系比较;
20.判断输入值是否在(n, m)区间;
21.输入字符长度限制(可按字节比较);
22.对于具有相同名称的单选按钮的选中判断;
23.限制具有相同名称的多选按钮的选中数目;
24.自定义的正则表达式验证;
25.文件上传格式过滤(1.04新增)。

语法:accept="string"
类型:字符串。 可选。
说明:设定表单项输入过滤,多用于type="file" 的上传控件,以限制允许上传的文件类型。该属性仅当dataType属性值为Filter时起作用。

语法:dataType="Require | Chinese | English | Number | Integer | Double | Email | Url | Phone | Mobile | Currency | Zip | IdCard | QQ | Date | SafeString | Repeat | Compare | Range | Limit | LimitB | Group | Custom | Filter "

类型:字符串。必选。
说明:用于设定表单项的输入数据验证类型。
选值说明:
可选值 验证功能
Require 必填项
Chinese 中文
English 英文

Number 数字
Integer 整数
Double 实数
Email    Email地址格式
Url    基于HTTP协议的网址格式
Phone    电话号码格式
Mobile 手机号码格式
Currency 货币格式
Zip    邮政编码
IdCard    身份证号码
QQ    Q号码
Date    日期
SafeString 安全密码
Repeat    重复输入
Compare 关系比较
Range    输入范围
Limit    限制输入长度
LimitB    限制输入的字节长度
Group    验证单/多选按钮组
Custom 自定义正则表达式验证
Filter    设置过滤,用于限制文件上传


验证表单
在表单中加上onsubmit事件,触发调用Validaotor的Validate方法,代码示例:
<form onSubmit="return Validator.Validate(this)" action="your_application_page" method="post">
... ...
</form>
Validate方法有两个可选参数,第一个为表单对象,如果是写在表单的onsubmit事件中,可以用this指代当前表单,默认值为事件源对象;第二个参数为错误提示模式,可选值为1,2和3,默认值为1。省略第二个参数时相当于使用Validate(objForm,1),省略第一个参数时相当于 Validate(this,1)。注意,不可以省略第一个参数而只写第二个参数,Validate(,2)是错误的用法。


验证输入是否Email地址
代码示例:
<input name="Email" dataType="Email" msg="信箱格式不正确">
或

<input name="Email" dataType="Custom" regexp="^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$" msg="信箱格式不正确">

Validator的必要属性是dataType和msg(区分大小写),然后根据dataType值的不同,会引发出不同的属性。因为程序中已经集成 Email地址格式的正则,所以可以直接用dateType="Email"进行验证,如果对Email地址的格式有不同的限制,可以用自定义的正则来验证(参考第二段代码)。

验证下拉菜单是否选中
代码示例:
<select name="Operation" dataType="Require" msg="未选择所用操作系统" >
<option value="">选择您所用的操作系统</option>
<option value="Win98">Win98</option>
<option value="Win2k">Win2k</option>
<option value="WinXP">WinXP</option>
</select>
注意,对于IE,在option中没写value属性时IE的解释引擎将自动设置其值为空,而Firefox时将自动设置其值为text属性址。例如,在示例代码中如果第一个option不写value属性,IE中将得到value为空,而Firefox为"选择您所用的操作系统"。


验证是否选中单选按钮组中的一个
代码示例:
广东<input name="Province" value="1" type="radio">
陕西<input name="Province" value="2" type="radio">
浙江<input name="Province" value="3" type="radio">
江西<input name="Province" value="4" type="radio" dataType="Group" msg="必须选定一个省份" >
对于单/多选按钮组的验证,dataType属性都为Group,然后只需在按钮组的最后一个写上dataType和msg属性。
注意,要成为单/多选按钮组,它们必须具有相同的name属性值。


限制多选按钮组的选中个数
代码示例:
运动<input name="Favorite" value="1" type="checkbox">
上网<input name="Favorite" value="2" type="checkbox">
听音乐<input name="Favorite" value="3" type="checkbox">
看书<input name="Favorite" value="4" type="checkbox"" dataType="Group" min="2" max="3" msg="必须选择2~3种爱好">
要限制多选按钮组的选中个数,必须设置min和max属性。min属性用于设定选中个数的下限,max为上限,默认时min为1,max为多选按钮组的个数。

<br />
<br />
------------------------------------------------------------------------------------------------------------------------------
<br />
<br />
<table align="center">
<form name="theForm" id="demo" method="get" onSubmit="return Validator.Validate(this)">
<tr>
   <td>身份证号:</td><td><input name="Card" dataType="IdCard" msg="身份证号错误" onblur="return Validator.check(this)"></td>
</tr>
    <tr>
   <td>真实姓名:</td><td><input name="Name" dataType="Chinese" msg="真实姓名只允许中文" onblur="return Validator.check(this)"></td>
</tr>
<tr>
   <td>ID:</td><td><input name="username" dataType="Username" msg="ID名不符合规定" onblur="return Validator.check(this)"></td>
</tr>
<tr>
   <td>英文名:</td><td><input name="Nick" dataType="English" require="false" msg="英文名只允许英文字母" onblur="return Validator.check(this)"></td>
</tr>
    <tr>
   <td>主页:</td><td><input name="Homepage" require="false" dataType="Url"   msg="非法的Url" onblur="return Validator.check(this)"></td>
</tr>
<tr>
   <td>密码:</td><td><input name="Password" dataType="SafeString"   msg="密码不符合安全规则" type="password" onblur="return Validator.check(this)"></td>
</tr>
<tr>
   <td>重复:</td><td><input name="Repeat" dataType="Repeat" to="Password" msg="两次输入的密码不一致" type="password" onblur="return Validator.check(this)"></td>
</tr>
<tr>
   <td>信箱:</td><td><input name="Email" dataType="Email" msg="信箱格式不正确" onblur="return Validator.check(this)"></td>
</tr>
    <tr>
   <td>信箱:</td><td><input name="Email" dataType="Repeat" to="Email" msg="两次输入的信箱不一致"></td>
</tr>
<tr>
   <td>QQ:</td><td><input name="QQ" require="false" dataType="QQ" msg="QQ号码不正确"></td>
</tr>
    <tr>
   <td>身份证:</td><td><input name="Card" dataType="IdCard" msg="身份证号码不正确"></td>
</tr>
<tr>
   <td>年龄:</td><td><input name="Year" dataType="Range" msg="年龄必须在18~28之间" min="18" max="28"></td>
</tr>
   <tr>
   <td>年龄1:</td><td><input name="Year1" require="false" dataType="Compare" msg="年龄必须在18以上" to="18" operator="GreaterThanEqual"></td>
</tr>
   <tr>
   <td>电话:</td><td><input name="Phone" require="false" dataType="Phone" msg="电话号码不正确"></td>
</tr>
   <tr>
   <td>手机:</td><td><input name="Mobile" require="false" dataType="Mobile" msg="手机号码不正确"></td>
</tr>
     <tr>
   <td>生日:</td><td><input name="Birthday" dataType="Date" format="ymd" msg="生日日期不存在"></td>
</tr>
   <tr>
   <td>邮政编码:</td><td><input name="Zip" dataType="Custom" regexp="^[1-9]\d{5}$" msg="邮政编码不存在"></td>
</tr>
<tr>
   <td>邮政编码:</td><td><input name="Zip1" dataType="Zip" msg="邮政编码不存在"></td>
</tr>
<tr>
   <td>操作系统:</td><td><select name="Operation" dataType="Require" msg="未选择所用操作系统" onclick="return Validator.check(this)" ><option value="">选择您所用的操作系统</option><option value="Win98">Win98</option><option value="Win2k">Win2k</option><option value="WinXP">WinXP</option></select></td>
</tr>
<tr>
   <td>所在省份:</td><td>广东<input name="Province" value="1" type="radio">陕西<input name="Province" value="2" type="radio">浙江<input name="Province" value="3" type="radio">江西<input name="Province" value="4" type="radio" dataType="Group" msg="必须选定一个省份" ></td>
</tr>
<tr>
   <td>爱好:</td><td>运动<input name="Favorite" value="1" type="checkbox">上网<input name="Favorite" value="2" type="checkbox">听音乐<input name="Favorite" value="3" type="checkbox">看书<input name="Favorite" value="4" type="checkbox"" dataType="Group" min="2" max="3" msg="必须选择2~3种爱好"></td>
</tr>
   <td>自我介绍:</td><td><textarea name="Description" dataType="Limit" max="10" msg="自我介绍内容必须在10个字之内"> 中文是一个字</textarea></td>
</tr>
     <td>自传:</td><td><textarea name="History" dataType="LimitB" min="3" max="10" msg="自传内容必须在[3,10]个字节之内">中文是两个字节t</textarea></td>
</tr>
    <tr>
   <td>相片上传:</td><td><input name="up" dataType="Filter" msg="非法的文件格式" type="file" accept="jpg, gif, png"></td>
</tr>
<tr>
   <td colspan="2"><input name="Submit" type="submit" value="确定提交"></td>
</tr>
</form>
</table>
<script>

/**
 * 由"我佛山人" v1.05验证框架稍作改动而得,如要寻根,请找 “我佛山人 v1.05”
 *
 */
Validator = {
	Require : /.+/,
	Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
	Phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,
	Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,
	Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
	Currency : /^\d+(\.\d+)?$/,
	Number : /^\d+$/,
	Zip : /^[1-9]\d{5}$/,
	QQ : /^[1-9]\d{4,9}$/,
	Integer : /^[-\+]?\d+$/,
	Double : /^[-\+]?\d+(\.\d+)?$/,
	English : /^[A-Za-z]+$/,
	Chinese :  /^[\u0391-\uFFE5]+$/,
	Username : /^[a-z]\w{3,}$/i,
	UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
	IsSafe : function(str){return !this.UnSafe.test(str);},
	IdCard : "this.IsIdCard(value)",
	SafeString : "this.IsSafe(value)",
	Filter : "this.DoFilter(value, getAttribute('accept'))",
	Limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",
	LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",
	Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",
	Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",
	Range : "getAttribute('min') < (value|0) && (value|0) < getAttribute('max')",
	Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",
	Custom : "this.Exec(value, getAttribute('regexp'))",
	Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",
	ErrorItem : [document.forms[0]],
	ErrorMessage : [],

	/**
	 * 对整个表单进行验证
	 *
	 * @param FormObject
	 */
	Validate : function(theForm){
		this.clearErrMsg();
		
		var obj = theForm || event.srcElement;
		var count = obj.elements.length;
		this.ErrorMessage.length = 1;
		this.ErrorItem.length = 1;
		this.ErrorItem[0] = obj;
		for(var i=0;i<count;i++){
			with(obj.elements[i]){
				var _dataType = getAttribute("dataType");
				if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  continue;
				this.ClearState(obj.elements[i]);
				if(getAttribute("Require") == "false" && value == "") continue;
				switch(_dataType){
					case "IdCard" :
					case "Date" :
					case "Repeat" :
					case "Range" :
					case "Compare" :
					case "Custom" :
					case "Group" :
					case "Limit" :
					case "LimitB" :
					case "SafeString" :
					case "Filter" :
					if(!eval(this[_dataType]))	{
						this.AddError(i, getAttribute("msg"));
					}
					break;
					default :
					if(!this[_dataType].test(value)){
						this.AddError(i, getAttribute("msg"));
					}
					break;
				}
			}
		}

		if(this.ErrorMessage.length > 1){
			var errCount = this.ErrorItem.length;
			for(var i=1;i<errCount;i++) {
				this.ErrorItem[i].style.color = "#FF0000";
			}
			

			for(var i=1;i<errCount;i++){
				try{
					var span = document.createElement("span");
					span.id = "__ErrorMessagePanel";
				    span.setAttribute('class', 'error-message');
					span.style.color = "#FF0000";
					this.ErrorItem[i].parentNode.appendChild(span);
					span.innerHTML = this.ErrorMessage[i];
				}
				catch(e){alert(e.description);}
			}
			this.ErrorItem[1].focus();
			
			return false;
		}
		return true;
	},
	
	/**
	 * 对单个元素进行验证
	 * useage:
	 *    <input name="test" type="text" onblur="Validator.check(this)" />
	 *    各种事件均有效
	 *
	 * @param FormElement id
	 */
	check : function (id) {
		var _dataType = id.getAttribute("dataType");
		var value = id.value;
		if(typeof(_dataType) == "object" || typeof(this[_dataType]) == "undefined")  return;
		this.ClearState(id);
		if(id.getAttribute("Require") == "false" && value == '') return;
		
		this.clearErrMsg();

		switch(_dataType){
			case "IdCard" :
			case "Date" :
			case "Repeat" :
			case "Range" :
			case "Compare" :
			case "Custom" :
			case "Group" :
			case "Limit" :
			case "LimitB" :
			case "SafeString" :
			case "Filter" :
			if(!eval(this[_dataType]))	{
				var span = document.createElement("span");
				span.id = "__ErrorMessage";
				span.setAttribute('class', 'error-message');
				span.style.color = "#FF0000";
				id.parentNode.appendChild(span);
				span.innerHTML = id.getAttribute("msg");
			}
			break;
			default :
			if(!this[_dataType].test(value)){
				var span = document.createElement("span");
				span.id = "__ErrorMessage";
				span.setAttribute('class', 'error-message');
				span.style.color = "#FF0000";
				id.parentNode.appendChild(span);
				span.innerHTML = id.getAttribute("msg");
			}
			break;
		}
		
		id.focus();
	},

	limit : function(len,min, max){
		min = min || 0;
		max = max || Number.MAX_VALUE;
		return min <= len && len <= max;
	},
	LenB : function(str){
		return str.replace(/[^\x00-\xff]/g,"**").length;
	},
	ClearState : function(elem){
		with(elem){
			if(style.color == "#FF0000")
			style.color = "";
			var lastNode = parentNode.childNodes[parentNode.childNodes.length-1];
			if(lastNode.id == "__ErrorMessagePanel")
			parentNode.removeChild(lastNode);
		}
	},
	AddError : function(index, str){
		this.ErrorItem[this.ErrorItem.length] = this.ErrorItem[0].elements[index];
		this.ErrorMessage[this.ErrorMessage.length] = this.ErrorMessage.length + ":" + str;
	},
	Exec : function(op, reg){
		return new RegExp(reg,"g").test(op);
	},
	compare : function(op1,operator,op2){
		switch (operator) {
			case "NotEqual":
			return (op1 != op2);
			case "GreaterThan":
			return (op1 > op2);
			case "GreaterThanEqual":
			return (op1 >= op2);
			case "LessThan":
			return (op1 < op2);
			case "LessThanEqual":
			return (op1 <= op2);
			default:
			return (op1 == op2);
		}
	},
	MustChecked : function(name, min, max){
		var groups = document.getElementsByName(name);
		var hasChecked = 0;
		min = min || 1;
		max = max || groups.length;
		for(var i=groups.length-1;i>=0;i--)
		if(groups[i].checked) hasChecked++;
		return min <= hasChecked && hasChecked <= max;
	},
	DoFilter : function(input, filter){
		return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);
	},
	IsIdCard : function(number){
		var date, Ai;
		var verify = "10x98765432";
		var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
		var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];
		var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);
		if(re == null) return false;
		if(re[1] >= area.length || area[re[1]] == "") return false;
		if(re[2].length == 12){
			Ai = number.substr(0, 17);
			date = [re[9], re[10], re[11]].join("-");
		}
		else{
			Ai = number.substr(0, 6) + "19" + number.substr(6);
			date = ["19" + re[4], re[5], re[6]].join("-");
		}
		if(!this.IsDate(date, "ymd")) return false;
		var sum = 0;
		for(var i = 0;i<=16;i++){
			sum += Ai.charAt(i) * Wi[i];
		}
		Ai +=  verify.charAt(sum%11);
		return (number.length ==15 || number.length == 18 && number == Ai);
	},
	IsDate : function(op, formatString){
		formatString = formatString || "ymd";
		var m, year, month, day;
		switch(formatString){
			case "ymd" :
			m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
			if(m == null ) return false;
			day = m[6];
			month = m[5]*1;
			year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
			break;
			case "dmy" :
			m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
			if(m == null ) return false;
			day = m[1];
			month = m[3]*1;
			year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
			break;
			default :
			break;
		}
		if(!parseInt(month)) return false;
		month = month==0 ? 12 : month;
		var date = new Date(year, month-1, day);
		return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());
		function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
	},
	clearErrMsg : function() {
		var errMsg = document.getElementById('__ErrorMessage');
		if(errMsg != null) {
			errMsg.parentNode.removeChild(errMsg);
		}
	}
}
</script>
分享到:
评论
2 楼 courage207 2011-10-13  
     要是早几年出来,你就无敌了
1 楼 xmllong 2011-01-28  
用这个校验框架,在查询的条件输入框里面,如果有一项,用户可以不填写,但是如果填写,必须用数字,这个怎么实现呢

相关推荐

    我佛山人框架Validator4.0

    我佛山人框架 我佛山人框架 我佛山人框架 我佛山人框架 我佛山人框架

    我佛山人 Validator v1.05 selectersky2009.08.09修改版

    很好用的表单通用验证。不过有时一个文本框里有默认文本是,验证就会达不到效果。 于是增加属性:allowDefaultValue:是否允许默认值通过验证 默认...附:详细的我佛山人使用说明 欢迎访问我的博客:www.selectersky.cn

    js表单验证-我是佛山人

    "js表单验证-我是佛山人"这个主题可能是一个教学资源或项目实例,它旨在教授如何利用JavaScript对用户输入的数据进行有效验证,确保数据的正确性、安全性和有效性。在网页表单中,数据验证通常在客户端进行,这样...

    我佛山人Validator3.0

    "我佛山人Validator3.0"是一个JavaScript验证库,它主要设计用于前端数据验证,确保用户在表单提交前输入的数据格式正确、有效。在Web应用中,这种验证功能至关重要,因为它可以提供即时反馈,减少服务器端的压力,...

    我佛山人Validator.chm

    "我佛山人Validator.chm" 是一个专门针对“我佛山人Validator”的JavaScript验证库的离线帮助文档,通常以CHM(Compiled HTML Help)格式提供。CHM文件是一种由Microsoft开发的帮助系统,它将HTML页面、图像和其他...

    基于[我佛山人validator.js]的验证框架

    【基于我佛山人validator.js的验证框架】 在前端开发中,数据验证是不可或缺的一部分,它确保用户输入的数据符合预设的规则,从而提高系统的稳定性和安全性。`validator.js` 是一款由“我佛山人”开发的轻量级验证...

    我佛山人框架Validator4.0(CHM,DEMO)

    表单的验证一直是Web开发头痛的问题,表单验证类 Validator就是为解决这个问题而写的,旨在使设计者从纷繁复杂的表单验证中解放出来,把精力集中于UI设计与业务逻辑上。 ... Validator v4.0考虑了绝大多数情况下的...

    我佛山人validator4.0验证框架和使用文档

    4.0 功能特点 1.支持Ajax验证 2.实现密码安全度等级验证及显示 3.5种配置方式 4.6种消息提示模式 5.能避免网络原因未完全下载validator.js时提交未经验证表单的 6.避免变量名冲突 7.详细的帮助说明文档 8. ...

    我是佛山人版客户端验证

    【我是佛山人版客户端验证】是一个针对特定应用的验证代码资源,主要涉及到客户端验证、JavaScript编程以及正则表达式的应用。客户端验证在Web开发中扮演着至关重要的角色,它能够实时检查用户输入的有效性,提高...

    超强大的JS表单验证及使用-我佛山人

    JavaScript(简称JS)是一种轻量级的脚本语言,广泛应用于网页和网络应用开发,尤其在客户端表单验证中扮演着重要角色。本教程将深入探讨如何利用JS进行高效的表单验证,确保用户输入的数据符合预设的规则,提高用户...

    我佛山人4.0 表单验证插件

    "我佛山人4.0 表单验证插件"是一个专为前端开发者设计的强大客户端表单验证工具。这个插件的出现,极大地简化了在网页表单中进行数据验证的复杂性,使得开发者能够更专注于应用程序的核心功能。下面将详细介绍这个...

    佛山论坛 SQL版 v1.0

    "佛山论坛 SQL版 v1.0"是一款专为SQL SERVER数据库设计的论坛系统,它针对大型数据库场景进行了优化,能够有效处理大规模数据,确保在高并发访问下的稳定性和性能。这款论坛系统集成了多种功能,旨在提供一个高效、...

    佛山市高程数据DEM.rar

    佛山市高程数据DEM30米精度,意味着该数据集提供了佛山市区域内每30米×30米网格的精确海拔高度信息。这种高精度的DEM数据对于城市规划、环境研究、地质灾害评估、交通路线设计、水资源管理等多个领域都具有重要的...

    最新佛山地铁线路shp矢量图层数据下载 

    本文将详细解析“最新佛山地铁线路shp矢量图层数据下载”这一主题,以及相关文件的含义和用途。在GIS(地理信息系统)领域,这种数据集是进行城市规划、交通分析、空间决策等工作的基础。 首先,"shp"文件是ESRI...

    2019-2020学年广东省佛山市南海区人教版六年级下册期末考试数学试卷+答案.pdf

    2019-2020学年广东省佛山市南海区人教版六年级下册期末考试数学试卷+答案.pdf

    佛山市南海区积分入学申请表.pdf

    "佛山市南海区积分入学申请表.pdf" 根据提供的文件信息,以下是相关知识点的详细解释: 学生信息 * 学生姓名:申请学生的姓名 * 性别:申请学生的性别 * 出生日期:申请学生的出生日期 * 户籍所在地:申请学生的...

    js验证Validator,我是佛山人

    【标题】"js验证Validator,我是佛山人"指的是一个基于JavaScript的验证工具,可能是由一位来自佛山的开发者创建的。这个验证器(Validator)可能是为了帮助前端开发人员更方便、高效地实现表单数据的验证。 【描述...

    佛山市分县、街道矢量数据shp,WSG84坐标

    【标题】"佛山市分县、街道矢量数据shp,WSG84坐标"涉及到的主要知识点包括地理信息系统(GIS)、矢量数据、空间坐标系统以及特定软件的应用。 1. **地理信息系统(GIS)**:GIS是一种集成硬件、软件、地理数据的...

    佛山论坛 SQL版 v2001

    【佛山论坛 SQL版 v2001】是一个针对IT专业人士和爱好者推出的论坛软件,主要针对SQL数据库进行优化设计,旨在提供一个高效、易用且功能丰富的互动平台。这个版本带来了多个重要的更新和改进,旨在提升用户体验和...

Global site tag (gtag.js) - Google Analytics