Javascript 如何将onfocus函数添加到js中,而不是将其添加到textarea标记中
大家好,我有下面的代码,我需要在javascript中添加onfocus函数,而不是在textarea标记中添加它,因为如果我在textarea标记中添加它,它是不安全的 还可以按textarea类(class=“limittext”)使js代码正常工作Javascript 如何将onfocus函数添加到js中,而不是将其添加到textarea标记中,javascript,jquery,html,Javascript,Jquery,Html,大家好,我有下面的代码,我需要在javascript中添加onfocus函数,而不是在textarea标记中添加它,因为如果我在textarea标记中添加它,它是不安全的 还可以按textarea类(class=“limittext”)使js代码正常工作 限制文本区域 文本区{ 宽度:400px; 高度:200px } var alert_title='Input Restriction'; 函数limitTextarea(el、maxLines、maxChar){ 如果(!el.x){ el
限制文本区域
文本区{
宽度:400px;
高度:200px
}
var alert_title='Input Restriction';
函数limitTextarea(el、maxLines、maxChar){
如果(!el.x){
el.x=唯一性();
el.onblur=function(){clearInterval(窗口['int'+el.x])}
}
窗口['int'+el.x]=setInterval(函数(){
变量行=el.value.replace(/\r/g')。split('\n'),
i=线条长度,
删除线(u),,
去焦;
如果(maxLines&&i>maxLines){
警报('您不能输入\n超过'+maxLines+'lines');
lines=lines.slice(0,maxLines);
删除的行数=1
}
if(maxChar){
i=直线长度;
而(i-->0)if(行[i].length>maxChar){
行[i]=行[i]。切片(0,maxChar);
char_removed=1
}
if(char\u removed)警报('每行不能输入超过'+maxChar+'个字符')
}
如果(char|u removed | lines|u removed)el.value=lines.join('\n'))
},50);
}
函数uniqueInt(){
var num,maxNum=100000;
if(!uniqueInt.a | | maxNum0)if(testItem==this[i])返回1;
返回0
};
函数集\u ie\u alert(){
window.alert=函数(msg\u str){
vb\u警报(msg\u str)
}
}
设置警报()
函数vb\u警报(msg\u str)
MsgBox msg_str,vbOKOnly+vbInformation+vbapplicationmodel,警报标题
端函数
一些文本
您可以使用.addEventListener()
在javascript中添加事件侦听器,并使用document.getElementsByClassName()获取类“limittext”的所有元素。您可以做的是找到感兴趣的类的所有元素,然后遍历它们并为每个元素设置一个事件侦听器。像这样的方法应该会奏效:
var elements = document.getElementsByClassName('limittext');
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener('focus', function() {
limitTextArea(elements[i],2,0);
});
}
var elements=document.getElementsByClassName('limittext');
对于(var i=0;i
我不知道这是否是最好的解决方案。我没能让它按类工作,但我通过使用ID和在js代码上做一些编辑使代码工作
谢谢你帮我的忙
限制文本区域
文本区{
宽度:400px;
高度:200px
}
设置警报()
函数vb\u警报(msg\u str)
MsgBox msg_str,vbOKOnly+vbInformation+vbapplicationmodel,警报标题
端函数
一些文本
var alert_title='Input Restriction';
var x=document.getElementById('myForm');
x、 添加的文本列表器(“聚焦”,limitTextarea);
函数limitTextarea(){
var el=这个;
var maxLines=5;
var-maxChar=0;
如果(!el.x){
el.x=唯一性();
el.onblur=function(){clearInterval(窗口['int'+el.x])}
}
窗口['int'+el.x]=setInterval(函数(){
变量行=el.value.replace(/\r/g')。split('\n'),
i=线条长度,
删除线(u),,
去焦;
如果(maxLines&&i>maxLines){
警报('您不能输入\n超过'+maxLines+'lines');
lines=lines.slice(0,maxLines);
删除的行数=1
}
if(maxChar){
i=直线长度;
而(i-->0)if(行[i].length>maxChar){
行[i]=行[i]。切片(0,maxChar);
char_removed=1
}
if(char\u removed)警报('每行不能输入超过'+maxChar+'个字符')
}
如果(char|u removed | lines|u removed)el.value=lines.join('\n'))
},50);
}
函数uniqueInt(){
var num,maxNum=100000;
if(!uniqueInt.a | | maxNum0)if(testItem==this[i])返回1;
返回0
};
函数集\u ie\u alert(){
window.alert=函数(msg\u str){
vb\u警报(msg\u str)
}
}
谢谢您的帮助。我已经试过了,但如果您只是尝试调用.alert()
而不是调用.limitTextArea()
,则无法正常工作。有什么事发生吗@user3772028不起作用。您可以在此链接@user3772028上编辑它吗?在尝试添加事件侦听器之前,请确保已加载DOM
var elements = document.getElementsByClassName('limittext');
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener('focus', function() {
limitTextArea(elements[i],2,0);
});
}
<html>
<head>
<title>Limit Textarea</title>
<style type="text/css">
textarea{
width:400px;
height:200px
}
</style>
<script language="vbscript" type="text/vbs">
set_ie_alert()
Function vb_alert(msg_str)
MsgBox msg_str,vbOKOnly+vbInformation+vbApplicationModal,alert_title
End Function
</script>
</head>
<body>
<textarea id="myForm" wrap="off">some text</textarea>
<script type="text/javascript">
var alert_title='Input Restriction';
var x = document.getElementById('myForm');
x.addEventListener("focusin", limitTextarea);
function limitTextarea(){
var el = this;
var maxLines = 5;
var maxChar = 0;
if(!el.x){
el.x=uniqueInt();
el.onblur=function(){clearInterval(window['int'+el.x])}
}
window['int'+el.x]=setInterval(function(){
var lines=el.value.replace(/\r/g,'').split('\n'),
i=lines.length,
lines_removed,
char_removed;
if(maxLines&&i>maxLines){
alert('You can not enter\nmore than '+maxLines+' lines');
lines=lines.slice(0,maxLines);
lines_removed=1
}
if(maxChar){
i=lines.length;
while(i-->0)if(lines[i].length>maxChar){
lines[i]=lines[i].slice(0,maxChar);
char_removed=1
}
if(char_removed)alert('You can not enter more\nthan '+maxChar+' characters per line')
}
if(char_removed||lines_removed)el.value=lines.join('\n')
},50);
}
function uniqueInt(){
var num,maxNum=100000;
if(!uniqueInt.a||maxNum<=uniqueInt.a.length)uniqueInt.a=[];
do num=Math.ceil(Math.random()*maxNum);
while(uniqueInt.a.hasMember(num))
uniqueInt.a[uniqueInt.a.length]=num;
return num
}
Array.prototype.hasMember=function(testItem){
var i=this.length;
while(i-->0)if(testItem==this[i])return 1;
return 0
};
function set_ie_alert(){
window.alert=function(msg_str){
vb_alert(msg_str)
}
}
</script>
</body>
</html>