# زبان های اسکریپتی > JavaScript و Framework های مبتنی بر آن >  تو input فقط فارسی تایپ کنید یا فقط عدد تایپ کنید.

## olampiad

سلام و خسته نباشبد به دوستان عزیز
من فرم ثبت نامی دارم که تو بعضی از فیلد ها میخوام کاربر فقط فارسی بنویسه:
یعنی اگه زبان صفحه کلید هم en بود توی فیلد فارسی بنویسه.
آیا این کار شدنی هستش؟
آیا میشه تو بعضی از فیلد ها هم فقط خارجی بنویسه؟
من با چ تابعی میتونم این کار رو انجام بدم.
آیا واسه این کار تابعی سراغ دارید.
میشه ی توضیح مختصری در مورد این کار بدید.
خیلی ممنون

----------


## mojooriass

براي حروف عربي عبارت معادل داريم ولي متاسفانه نه براي فارسي
بهترين كار اينه كه حروف فارسي رو توي يك آرايه نگه داري و روي رشته راه بري و مقايسه كني ...

----------


## olampiad

اگه ی کوچولو روش کار رو بگید بقیه رو خودم انجام میدم.
اگه بدونم با چ روشی باید این کار رو انجام بدم بقیشو خودم انجام میدم.
خیلی ممنون

----------


## hamedarian2009

سوالتون که ربطی به PHP نداره اما فکرمیکنم این اسکریپت به دردتون میخوره
http://farsitype.ir/

----------


## mojooriass

به روش رگولار قابل حل هست از این کد استفاده کنید به جا yourtxt متغییر خودتون را بدید.

$pattern = "/^[\s\x{0600}-\x{06FF}0-9]*$/u"; 


if (preg_match($pattern, $yourtext, $matches)) {
echo "farsi";
} else {
echo "engilish!";
}

اگه بخوای عدد را هم رو قبول نکنه پرترنو عوض کن بزار

$pattern = "/^[\s\x{0600}-\x{06FF}]*$/u";

----------


## olampiad

> براي حروف عربي عبارت معادل داريم ولي متاسفانه نه براي فارسي
> بهترين كار اينه كه حروف فارسي رو توي يك آرايه نگه داري و روي رشته راه بري و مقايسه كني ...


سلام 
اشکال نداره.
همون عربی هم باشه من راضیم.

به این تصویر ی نگا بندازید
http://s3.picofile.com/file/8188319492/aa.PNG
تو این فیلد ها فقط میشه از عدد استفاده کرد.
چ طوری این کار رو انجام دادن.
خیلی ممنون

----------


## mojooriass

> سلام 
> اشکال نداره.
> همون عربی هم باشه من راضیم.
> 
> به این تصویر ی نگا بندازید
> http://s3.picofile.com/file/8188319492/aa.PNG
> تو این فیلد ها فقط میشه از عدد استفاده کرد.
> چ طوری این کار رو انجام دادن.
> خیلی ممنون


این مربوط میشه به جاوا اسکریپ تو تاپیک مربوطه مطرح کنید من سمت سرورش را بالا براتون توضیح دادم

----------


## hamedarian2009

> به این تصویر ی نگا بندازید
> http://s3.picofile.com/file/8188319492/aa.PNG
> تو این فیلد ها فقط میشه از عدد استفاده کرد.
> چ طوری این کار رو انجام دادن.
> خیلی ممنون


از این تابع جاوااسکریپت استفاده کنید به این صورت :


```
    <input type="number" name="num" onkeypress="return isNumber(event)">

    <script type="text/javascript">
        function isNumber(evt) {
            evt = (evt) ? evt : window.event;
            var charCode = (evt.which) ? evt.which : evt.keyCode;
            if (charCode > 31 && (charCode < 48 || charCode > 57)) {
                return false;
            }
            return true;
        }
    </script>
```

----------


## MMSHFE

اگه یه تازه وارد داشت توی بخش PHP تاپیک درمورد JS ایجاد میکرد مشکلی نبود ولی شما دیگه چرا که نزدیک به 1000 پست دارین؟ از بقیه دوستانی که بجای تذکر دادن، جواب میدن هم تعجب میکنم. تاپیک به بخش Javascript منتقل شد.

----------


## olampiad

> از این تابع جاوااسکریپت استفاده کنید به این صورت :
> 
> 
> ```
>     <input type="number" name="num" onkeypress="return isNumber(event)">
> 
>     <script type="text/javascript">
>         function isNumber(evt) {
>             evt = (evt) ? evt : window.event;
> ...


سلام و خسته نباشید
خیلی ممنون
عالی بود دوست عزیز
همون چیزی بود که من میخواستم.
فقط
در مورد حروف فقط فارسی یا فقط انگلیسی چیکار کنم.
مثلا من یه فیلدی دارم که فقط میخوام انگلیسی تایپ کنم و کلمات فارسی رو زد چیزی تایپ نکنه.
در چنین فیلد هایی شرایط چطوری هستش.
خیلی ممنون

----------


## hamedarian2009

با توجه به تذکر مدیر لطفا سوالتون رو به بخش جاوا اسکریپت منتقل کنید

----------


## olampiad

سلام
خودم جوابشو پیدا کردم.



```
<input type="text" id="text">

<script type="text/javascript">
document.getElementById('text').onkeyup=function(){
var text=document.getElementById('text').value;
var count=text.length;
var start=count-1;
var carakter=text.substring(start,count);
var farsi=Array('ض','ص','ث','ق','ف','غ','ع','ه','خ','ح','ج','چ','پ','ش','س','ی','ب','ل','ا','ت','ن','م','ک','گ','ظ'
,'ط','ز','ر','ذ','د','ئ','و','.','ء','أ','إ','ؤ','ژ','ي','ة','ۀ','آ'); 
var indexof=farsi.indexOf(carakter); 
if(indexof==-1){
document.getElementById('text').value=text.substring(0,start);;
}

}
```

----------


## plague

اینو کد ها رو من با jquery نوشتم
اگه اینا رو تو صفحت داشته باشی کافیه که به فیلدت کلاس  farsi یا english  یا num بدی تا فقط همون نوع رو بشه توش تایپ کرد



    $(document).on( 'keydown' , '.numeric' ,function (e) {
        if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
            (e.keyCode == 65 && e.ctrlKey === true) || 
            (e.keyCode >= 35 && e.keyCode <= 40)) {
                 return;
        }
        if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
            e.preventDefault();
        }
    });        
        
    $(document).on( 'keydown' , '.farsi' ,function (e) {
        console.log(e.key);
            if(e.key == 'Alt' || e.key == 'Shift' || e.key == 'Tab' || e.key == 'Backspace')
            return ;
            
            if( !e.key.match(/^[0-9 ا آ ئ ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی]+$/)){
                e.preventDefault();
            }
    });        
        
        
    $(document).on( 'keydown' , '.engelish' ,function (e) {
        console.log(e.key);
            if(e.key == 'Alt' || e.key == 'Shift' || e.key == 'Tab' )
            return ;
            
            if( !e.key.match(/^[0-9 a-z A-Z]+$/)){
                e.preventDefault();
            }
    });

----------

