ورود

View Full Version : سوال: اضافه شدن جعبه متن با کلید tab



{mahdi}
دوشنبه 22 تیر 1394, 23:08 عصر
با عرض سلام و خسته نباشید.
من قطعه کد کوچکی نوشتم که کاربر با فشردن کلید tab یه جعبه متن جدید ایجاد میشه.
حالا من می خوام وقتی که این جعبه متن ایجاد شد فوکوس به جعبه متن جدید منتقل بشه.چند تا راه حل رو تست کردم اما جواب نداد.شما راه حلی رو سراغ دارید که این مشکل حل بشه.ممنون


<!doctype html>
<html>
<head>
<script>



var r=1;
function check(event){
if(event.which==9 || event.keyCode==9){
var input=document.createElement('input');
input.setAttribute('type','text');
input.setAttribute('id','txt'+r);
input.setAttribute('onKeyPress','check(event)');
document.getElementById('s').appendChild(input);
document.getElementById('s').appendChild(document. createElement('br'));
r++;
}
}



</script>
<meta charset="utf-8">
<title></title>
</head>
<body id="s">
<input type="text" onKeyPress="check(event)"><br/>
</body>
</html>

barnamenevis2016
سه شنبه 23 تیر 1394, 01:08 صبح
سلام اولا من که تپ رو می زنم اصلا جعبه جدیدی درست نمی شه که بخواد روش فوکوس بشه..من tab رو می زنم فوکوس می ره به بخش دیگه مثلا بخش آدرس بار مرورگر جعبه جدیدی ساخته نمی شه...که باس به جای onkeypress از onkeydown استفاده کنی..بعد چیزی که من خودم به ذهنم رسید...اینه که از این کد زیر استفاده کنیم و متغیر var رو هم از محلی بودن خارج کنیم و خواهیم داشت:

setTimeout( function(){input.focus() },20)
خواهیم داشت:

function check(event){
if(event.which==9 || event.keyCode==9){
input=document.createElement('input');
input.setAttribute('type','text');
input.setAttribute('id','txt'+r);
input.setAttribute('onKeyPress','check(event)');
document.getElementById('s').appendChild(input);
document.getElementById('s').appendChild(document. createElement('br'));
r++;
setTimeout( function(){input.focus() },20)
}
}

{mahdi}
سه شنبه 23 تیر 1394, 12:31 عصر
ممنون از جوابی که دادی اما این کد هم جواب نمی ده.

barnamenevis2016
سه شنبه 23 تیر 1394, 14:32 عصر
مطمئنی؟من الان اینو تست کردم..جواب داد ها:


<input type="text" onkeydown="check(event)"><br/>

[/CODE]
<script>
r = 1
function check(event){
if(event.which==9 || event.keyCode==9){
input=document.createElement('input');
input.setAttribute('type','text');
input.setAttribute('id','txt'+r);
input.setAttribute('onkeydown','check(event)');
document.getElementById('s').appendChild(input);
document.getElementById('s').appendChild(document. createElement('br'));
r++;
setTimeout( function(){input.focus() },20)
}
}
</script>
شاید یک r رو جا انداخته بودی و یا...کد بالا رو من تست کردم...جواب داد

{mahdi}
سه شنبه 23 تیر 1394, 16:56 عصر
درسته توی مرورگر opera تست کردم جواب می ده اما توی firefox جواب نمیده و فوکوس به جای دیگه منتقل می شه.

barnamenevis2016
سه شنبه 23 تیر 1394, 17:26 عصر
واقعیت من گاهی وقتا انتظار ندارم که دیگه در قرن 21 و در سال 2016 میلادی مرورگر ها اینطور بازی در بیارن!
نمی دونم..روش استاندارد و بهتر دیگه ای هست..شاید با فکر کردن به روش دیگه ای رسید....ولی من الان این به ذهنم رسید..یک تستش کنید، من که بایرفاکس تست کردم..جواب گرفتم....

<script>
r = 1
function check(event){
if(event.which==9 || event.keyCode==9){
input=document.createElement('input');

input2=document.createElement('input');
input2.style.position = "fixed"
input2.style.top = -400

input.setAttribute('type','text');
input.setAttribute('id','txt'+r);
input.setAttribute('onkeydown','check(event)');
document.getElementById('s').appendChild(input);
document.getElementById('s').appendChild(input2);
document.getElementById('s').appendChild(document. createElement('br'));
r++;
setTimeout( function(){
input.focus();
input2.parentElement.removeChild(input2)
},20)
}
}
</script>

SCoder
پنج شنبه 25 تیر 1394, 03:30 صبح
دوست عزیز لز key code ,Enter که 13 است استفاده کن که خودش focus را به box جدید انتقال میدهد ....