عوض شدن ترتیب کارکترها در هنگام تایپ در اینپوت باکس

splinter cell

Well-Known Member
با سلام به همه دوستان
یک اینپوت باکس در صفحه داریم که کاربر قراره حاصل تفریق دو عدد زیر رو در اون بنویسه.از اونجایی که طبق عادت دانش آموز اول یکان ها بعد دهگانها و صدگان و... رو از هم کم میکنه پس مینویسه 531 ولی جواب135 هست.حالا میخواستم بدونم چطور میشه کاری کنیم بعد از ورود هر کارکتر ، مکان نما بره اول متن و کارکتر بعدی در اول متن قرار بگیره. مثل وقتی خودمون روی کاغذ حاصل تفریق رو پیدا میکنیم و رقم به رقم مینویسیم.
امیدوارم منظورم رو رسونده باشم.:rose:

sum.GIF
 

پیوست ها

  • sum.JPG
    sum.JPG
    4.2 کیلوبایت · بازدیدها: 15
[PHPS]import fl.text.TLFTextField;
import flash.events.KeyboardEvent;

t.addEventListener(KeyboardEvent.KEY_DOWN,fun);

function fun(e:KeyboardEvent)
{
var s:String;
switch (e.charCode)
{
case 48 :
s = '0';
break;
case 49 :
s = '1';
break;
case 50 :
s = '2';
break;
case 51 :
s = '3';
break;
case 52 :
s = '4';
break;
case 53 :
s = '5';
break;
case 54 :
s = '6';
break;
case 55 :
s = '7';
break;
case 56 :
s = '8';
break;
case 57 :
s = '9';
break;
}
if (t.text == '')
{

}
else
{
t.text = s+t.text;
trace(e.charCode);
}
}[/PHPS]
 

پیوست ها

  • text.rar
    45.3 کیلوبایت · بازدیدها: 38

splinter cell

Well-Known Member
ممنون از شما
مشکلی که هست اینه که من نمیخوام ازtlf استفاده کنم.و توی اینپوت باکس معمولی وقتی یک رقم رو وارد میکنی بعد رقم دوم رو میزنی کل عدد رو یکبار دیگه تکرار میکنه و یه جورایی خوب کار نمیکنه.تست کنید
 

splinter cell

Well-Known Member
دوستان دیگه و خبرگان انجمن راه حلی ندارند واسه حل این مشکل؟
با سپاس
 

++Hadi++

Active Member
بهتره به جای یه تکست باکس ،از چند تکست باکس استفاده بشهویعنی برا هر رقم یه تکست باکس جدید با maxlength به عدد 1... بعد کلی با ضرب رقم یکان در 1 و ضرب عدد دهگان در 10 و صد گان در صد و ... و جمع حاصل رب ها ،می تودی مقایسه کنید که آیا عدد محاسبه شده با عدد نهاییت حاصل تفریق برابر هست یا نه...
 

splinter cell

Well-Known Member
ممنون از توجه شما هادی جان
ولی اونطوری مدام باید با ماوس روی اینپوت باکسها کلیک کنه تا بتونه توی هر کدوم تایپ کنه.و تازه اگر خودمون فوکوس رو بعد از تایپ یک رقم به اینپوت باکس بعدی ببریم و احتمالاً اشتباه تایپ کرده باشه و بخواد رقم رو تصحیح کنه باز باید با ماوس روی قبلی کلیک کنه و این خودش کلی درد سره.
روش پست بالا خیلی خوبه ولی نمیدونم چرا توی اینپوت باکس های معمولی دو تا دوتا عددها تایپ میشن؟
 

++Hadi++

Active Member
سلام
این یه شبیه سازی input text با استفاده از dynamic text هست که خودشم فقط اعداد رو قبول می کنه...اعداد منفی و ... رو خیلی روش کار نکردم ولی الان یادم اومد که بهتره برا اینکه دش با علامت منفی قاطی نشه ،به جای دش یا - از | استفاده کنید...
من delete اونو ننوشتم ولی خودتون دیگه بنویسید ساده هست و تقریبا چیزی که خواستید هستش فقط سعی کنید تست کنید من خیلی تست نکردم شاید باگ داشته باشه...بای...
PHP:
import flash.text.TextField;
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.utils.setInterval;
import flash.utils.clearInterval;
import flash.utils.setTimeout;

var n1:int=526;
var n2:int=455;
var n3=n1-n2;
t1.text=n1.toString();
t2.text=n2.toString();
var Focused:Boolean=false;
var hasDashSign:Boolean=false;
var id:int=0;

TextField(t3).addEventListener(KeyboardEvent.KEY_DOWN,onDownKeyboard);
TextField(t3).addEventListener(FocusEvent.FOCUS_IN,focusInFunc);
TextField(t3).addEventListener(FocusEvent.FOCUS_OUT,focusOutFunc);

function onDownKeyboard(evt:KeyboardEvent):void
{
    setTimeout(SetNumber,100,evt);
}
function SetNumber(evt:KeyboardEvent):void
{
    var newNumStr:String=checkSign(evt);
    TextField(t3).text=newNumStr+TextField(t3).text;
}
function checkSign(evt:KeyboardEvent):String
{
    trace(evt.keyCode);
    var output:String="";
    switch(evt.keyCode)
    {
        case 48:
            output="0";
        break;
        case 49:
            output="1";
        break;
        case 50:
            output="2";
        break;
        case 51:
            output="3";
        break;
        case 52:
            output="4";
        break;
        case 53:
            output="5";
        break;
        case 54:
            output="6";
        break;
        case 55:
            output="7";
        break;
        case 56:
            output="8";
        break;
        case 57:
            output="9";
        break;
        case 96:
            output="0";
        break;
        case 97:
            output="1";
        break;
        case 98:
            output="2";
        break;
        case 99:
            output="3";
        break;
        case 100:
            output="4";
        break;
        case 101:
            output="5";
        break;
        case 102:
            output="6";
        break;
        case 103:
            output="7";
        break;
        case 104:
            output="8";
        break;
        case 105:
            output="9";
        break;
        default:
            output="";
        break;
    }
    return output;
}
function focusInFunc(evt:FocusEvent):void
{
    Focused=true;
    clearInterval(id);
    id=setInterval(runtime,1000);
}
function focusOutFunc(evt:FocusEvent):void
{
    clearInterval(id);
    if(Dash)
    {
        Dash=false;
    }
    Focused=false;
}
function runtime():void
{
    if(Focused)
    {
        Dash=!Dash;
    }
}
function get Text():String
{
    var output:String=TextField(t3).text;
    if(Dash)
    {
        output=output.substr(0,output.length-2);
    }
    return output;
}
function set Dash(value:Boolean):void
{
    hasDashSign=value;
    var str:String=TextField(t3).text;
    if(str==null)str="";
    if(hasDashSign)
    {
        TextField(t3).text=(str.charAt(str.length-1)!="-")?str+"-":str;
    }
    else
    {
        TextField(t3).text=(str.charAt(str.length-1)=="-")?str.substr(0,TextField(t3).text.length-1):str;
    }
}
function get Dash():Boolean
{
    return hasDashSign;
}
 

پیوست ها

  • math input.rar
    8.1 کیلوبایت · بازدیدها: 31

جدیدترین ارسال ها

بالا