實現限制輸入大、小寫英文,數字,浮點小數,日期,中文,部分英文,部分中文等眾多功能。直接加入到html代碼中即可使用。
<script>
function regInput(obj, reg, inputStr)
{
var docSel = document.selection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
oSel = docSel.duplicate()
oSel.text = ""
var srcRange = obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
return reg.test(str)
}
</script>
小寫英文:<xmp style= "display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^[a-z]*$/, String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^[a-z]*$/, window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[a-z]*$/, event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled"><br>
大寫英文:<xmp style= "display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^[A-Z]*$/, String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^[A-Z]*$/, window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[A-Z]*$/, event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled">
<br>
任意數字:<xmp style="display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^[0-9]*$/, String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^[0-9]*$/, window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[0-9]*$/, event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled"><br>
限2位小數:<xmp style="display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^\d*\.?\d{0,2}$/,
String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^\d*\.?\d{0,2}$/,
window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^\d*\.?\d{0,2}$/,
event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled">
如: 123.12<br>
日 期:<xmp style="display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^\d{1,4}
([-\/](\d{1,2}([-\/](\d{1,2})?)?)?)?$/,
String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^\d{1,4}([-\/](\d{1,2}
([-\/](\d{1,2})?)?)?)?$/,
window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^\d{1,4}([-\/](\d{1,2}
([-\/](\d{1,2})?)?)?)?$/,
event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled">
如: 2002-9-29<br>
任意中文:<xmp style="display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^$/,
String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^[\u4E00-\u9FA5]*$/,
window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[\u4E00-\u9FA5]*$/,
event.dataTransfer.getData('Text'))"><br>
部分英文:<xmp style="display:inline"> </xmp>
<input onkeypress = "return regInput(this, /^[a-e]*$/,
String.fromCharCode(event.keyCode))"
onpaste = "return regInput(this, /^[a-e]*$/,
window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[a-e]*$/,
event.dataTransfer.getData('Text'))"
style="ime-mode:Disabled">
范圍: a,b,c,d,e<br>
部分中文:<xmp style="display:inline"> </xmp>
<script language=javascript>
function checkChinese(oldLength, obj)
{
var oTR = window.document.selection.createRange()
var reg = /[^一二三四五六七八九十]/g
oTR.moveStart("character", -1*(obj.value.length-oldLength))
oTR.text = oTR.text.replace(reg, "")
}
</script>
<input onkeypress="return false" onkeydown=
"setTimeout('checkChinese('+this.value.length+','+this.uniqueID+')',
1)"
onpaste = "return regInput(this, /^[一二三四五六七八九十]*$/,
window.clipboardData.getData('Text'))"
ondrop = "return regInput(this, /^[一二三四五六七八九十]*$/,
event.dataTransfer.getData('Text'))">
范圍: 一二三四五六七八九十<br>
2.不能展開右鍵,不能全選,不能復制的實現
<body oncontextmenu="window.event.returnvalue=false"
onkeypress="window.event.returnvalue=false"
onkeydown="window.event.returnvalue=false"
onkeyup="window.event.returnvalue=false"
ondragstart="window.event.returnvalue=false"
onselectstart="event.returnvalue=false">
...
</body>
3.禁止頁面正文內容被選取
<body oncontextmenu="return false" ondragstart="return false"
onselectstart ="return false" onselect="document.selection.empty()"
oncopy="document.selection.empty()" onbeforecopy="return false"onmouseup="document.selection.empty()">
4.避免別人把網頁放在框架中
<script language=“javascript”><!--if (self!=top){top.location=self.location;}-->< /script>
5.禁示查看源代碼
<frameset>
<frame src="你要保密的文件的URL">
</frameset>
6.關閉輸入法
<input style="ime-mode:disabled">
7.禁止圖片下載
在這里的最后加入:
oncontextmenu="return false" ondragstart="return false" onselectstart="return
false" scroll="auto"
8.禁止緩存
在HEAD里加入:
<meta http-equiv="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" CONTENT="no-cache">
<meta http-equiv="Pragma" CONTENT="no-cache">
privileged methods: 通過this.methodName=function(){}聲明
privileged properties:通過 this.variableName來聲明
(有些地方把privileged properties叫做public properties,但我感覺無論是按照
定義寫法,還是為了便于理解都叫privileged properties更好些。更便于對比對稱記憶)
prototype methods :通過Classname.prototype.methodname=function(){}來聲明
(有些地方叫public method,同樣和上邊一樣的理由,這里改叫prototype method)
prototype properties:通過 classname.prototype.propertyName=somevalue來聲明
static properties: 通過classname.propertyName=somevalue定義
static method :通過classnamne.methodName來聲明
說明:有些地方(例如我看的文檔中)把privileged properties和prototype method叫成
public properties 和public method,不知道為什么這樣叫。這樣命名后造成的問題是
1,privileged method沒有對應的privileged properties
2,prototype properties沒有對應的prototype method
3,public method和public properties的定義方式又不對稱
下邊解釋一下幾種情況:
1,private:定義在類內部,只能被類內部的方法調用,例如privileged(見實例一中的(1)(2))
2,priviledged :定義在類內部,能被任何調用,在調用上有點類似Java中
的非靜態public方法(見實例一中的(3))
3,prototype:這個概念不太好理解,在執行上有點像java的clone,只在類初始化的時候
執行一次。每次建立實例的時候不執行。能被繼承。
4,static: 有點類似java中的靜態。各實例共享,不能被繼承
實例一如下:
應用場合:
在平時開發的時候,我們都會有一些js文件的積累,大部份場合是不需要重新寫的。
但我們會把js文件的功能盡可能的細分,以便引入的時候不引入無用的代碼,但這樣造成的問題是在jsp文件
中要寫大量的這樣的句子
<script language='javascript' src="two.js" charset="utf-8"></script>
如果你有100個jsp文件,都用到10個js文件,這個時候每個jsp文件寫10句引入,這個是個麻煩的事情
現在,通過js文件的引入可以解決這個問題。定義一個js文件用來引入一些組合,jsp文件則只需要引入1個
這樣的js文件就可以了。js代碼少了100*99行
另外引入的js文件時候最好加上charset,特別是你的js文件有非英文,數字的時候。
事例的代碼下載:http://www.aygfsteel.com/Files/dreamstone/importJs.rar