Javascript <;输入>;停止按键操作
html:Javascript <;输入>;停止按键操作,javascript,Javascript,html: {{form_小部件(experienceForm.description{ “attr”:{ 'class':'form control field max length field max length field line length', “行”:6 } })}} handleChangeLineCounter=函数(){ $('.fieldline length').keyup(函数(e){ e、 预防默认值(); var countLineNum=(this.value
{{form_小部件(experienceForm.description{
“attr”:{
'class':'form control field max length field max length field line length',
“行”:6
}
})}}
handleChangeLineCounter=函数(){
$('.fieldline length').keyup(函数(e){
e、 预防默认值();
var countLineNum=(this.value.match(/\n/g)| |[]).length;
console.log(countLineNum);
checkEnterKey($(this),7,countLineNum);
});
}
函数checkEnterKey(getVarName、maxLine、countLine){
var msg2=maxLine-countLine+“对齐重新设置”;
如果((maxLine-countLine)==1 | |(maxLine-countLine)==0){
msg2=最大线-计数线+对齐重新设置;
}
getVarName.keypress(函数(e){
如果(e.which==13){
如果((最大线-计数线)<1){
返回false;
}
如果((maxLine-countLine)>0,则为else{
返回true;
}
}
});
$('.counter-msg-2').remove();
getVarName.after(“”+msg2+“”);
}
从上面的代码中,在函数checkEnterKey()
中,当(maxLine-countLine
)达到0时,我按delete键或backspace键,然后再次按enter键,键停止工作。
相反,如果(maxLine-countLine
)未达到0,我按delete键或backspace键,然后再次按enter键,该键工作。
当我到达
(maxLine-countLine)=0时,如何使enter键工作?您的代码存在一些问题:
您正在为每个keyup
添加一个新的keypress
事件处理程序,这非常糟糕
您正在使用JQuery中的remove()
和after()
,这比简单地放置元素和使用html()
更昂贵
下面的解决方案对上述问题进行了一些代码清理和补救
//用于将事件处理程序附加到元素的主函数
功能手柄更改线路计数器(最大值){
//计数器的初始值
$('.counter-msg-2').html(`${max}对齐restantes`);
//按键事件仅允许处理所需的行
//此代码不是keyup事件的一部分,因为返回
//此处为false不会阻止密钥出现
$('.字段行长度')。按键(功能(e){
设diff=max-($(this).val().match(/\n/g)| |[]).length;
如果(例如,哪个===13&&diff==0){
返回false;
}
});
//处理计数器显示的keyup事件
//此代码不是按键事件的一部分,因为上次
//输入键将丢失
$('.fieldline length').keyup(函数(e){
设diff=max-($(this).val().match(/\n/g)| |[]).length;
让msg=((diff)当返回false时,您是否尝试过更改为maxLine-countLine<0
?我尝试过,但问题仍然存在,我尝试过了,您可以包含HTML吗?您似乎每次调用checkenterkey时都会绑定一个新事件,为什么不将键代码传递到函数中。此外,不确定在达到最大行后您将要执行什么操作很高兴能帮上忙。
<div class="col-md-10 col-sm-10 col-xs-10">
{{ form_widget(experienceForm.description, {
'attr': {
'class': 'form-control field-max-length field-max-length field-line-length',
'rows': 6
}
})}}
</div>
handleChangeLineCounter = function() {
$('.field-line-length').keyup(function (e) {
e.preventDefault();
var countLineNum = (this.value.match(/\n/g)||[]).length;
console.log(countLineNum);
checkEnterKey ($(this), 7, countLineNum);
});
}
function checkEnterKey (getVarName, maxLine, countLine) {
var msg2 = maxLine - countLine +' lignes restantes,';
if ((maxLine - countLine) === 1 || (maxLine - countLine) === 0) {
msg2 = maxLine - countLine +' ligne restante,';
}
getVarName.keypress(function(e) {
if(e.which === 13) {
if ((maxLine - countLine) < 1) {
return false;
}
else if ((maxLine - countLine) > 0) {
return true;
}
}
});
$('.counter-msg-2').remove();
getVarName.after('<span class="counter-msg-2 m-r-5"><span class="counter_msg_2">' + msg2 + '</span></span>');
}