Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将onfocus函数添加到js中,而不是将其添加到textarea标记中_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何将onfocus函数添加到js中,而不是将其添加到textarea标记中

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

大家好,我有下面的代码,我需要在javascript中添加onfocus函数,而不是在textarea标记中添加它,因为如果我在textarea标记中添加它,它是不安全的

还可以按textarea类(class=“limittext”)使js代码正常工作


限制文本区域
文本区{
宽度: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>