خرت و پرت جاوا اسکریپت برای سایت شما

saalek110

Well-Known Member
خرت و پرت جاوا اسکریپت برای سایت شما

سلام، من سایت ساختم ولی چیزهایی نیاز داره سایتم.


در این تاپیک دنبال آموزش جاوا اسکریپت نیستم. دنبال تکه کدهایی هستم که به کارایی سایت کمک کند.
 

saalek110

Well-Known Member
تاپیک های مرتبط من:


 

saalek110

Well-Known Member

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

saalek110

Well-Known Member
JavaScript:
<html>
    <head>
    <script>

function readTextFile(file)
{
    var myFile = new XMLHttpRequest();
    myFile.open("GET", file, false);
    myFile.onreadystatechange = function ()
    {
        if(myFile.readyState === 4)
        {
            if(myFile.status === 200 || myFile.status == 0)
            {
                var allText = myFile.responseText;
                document.getElementById("hsBoard").innerHTML = allText;
            }
        }
    }
    myFile.send(null);
}
    </script>
    </head>
    <body>

    <div id='hsBoard'>
    Click On Read button to Read File
    </div>

    <br />
    <input type="button" value="Read" onClick="readTextFile('hs.txt')" /><br />
    </body>
    </html>

برنامه بالا ، محتوای یک فایل تکست را نمایش می دهد.کد بالا را با پسوند html در کامپیوتر یا گوشی خود ذخیره کنید.یک ادیتور پیدا کنید برای این کار.یک فایل با پسوند txt هم بسازید و چیزهایی در آن بنویسید. اسم فایل txt هم hs باشه . یعنی hs.txt .


حالا کاربردی نیست ولی خواستم یک قالبی داشته باشیم برای شروع کار.

اول اینکه این برنامه در هد فایل یک تابع جاوا اسکریپت دارد. پس ما هم می توانیم در هد ، تابع جاوا اسکریپت قرار دهیم.
دوم اینکه یک دکمه تعریف کرده با جاوا اسکریپت که در برنامه هایمان نیاز پیدا می کنیم.

داخل تابع اگر نگاه کنید به hsBoard نگاه می کند. و محتوای اون را تغییر می دهد. که همین div موجود در فایل است.

پس با کد میشه محتوای یک div دا تغییر داد.
پس خلاصه برنامه :


خواندن فایل متنی.
دارای دکمه.
تغییر یک div
 
آخرین ویرایش:

saalek110

Well-Known Member
یک نرم افزار اندرویدی هست که خروجی کنسول را نشان می دهد:





اگر به کارتون می آید ، دانلود کنید.

یکی دو تا ادیتور اندرویدی در تاپیک آموزش جاوا اسکریپت من لینک داده شده ، من خودم ازادیتور اندرویدی ace استفاده می کنم.
 

saalek110

Well-Known Member
JavaScript:
<html>
    <head>
  
  
    <SCRIPT LANGUAGE="JAVASCRIPT">
<!-- hide this script tag's contents from old browsers
function lifetimer(){         

        today = new Date()       

        BirthDay = new Date(document.live.age.value)       

        timeold = (today.getTime() - BirthDay.getTime());       

        sectimeold = timeold / 1000;       

        secondsold = Math.floor(sectimeold);       

        msPerDay = 24 * 60 * 60 * 1000 ;       

        timeold = (today.getTime() - BirthDay.getTime());       

        e_daysold = timeold / msPerDay;       

        daysold = Math.floor(e_daysold);       

        e_hrsold = (e_daysold - daysold)*24;       

        hrsold = Math.floor(e_hrsold);       

        minsold = Math.floor((e_hrsold - hrsold)*60);         

        document.live.time1.value = daysold           

        document.live.time2.value = hrsold             

        document.live.time3.value = minsold           

        window.status = "Well at the moment you are " + secondsold + "............ seconds old.";       

        timerID = setTimeout("lifetimer()",1000) 

}     
// -- done hiding from old browsers -->

</script>
  

    </head>
    <body>




<FORM name="live">

Please enter your age::<INPUT TYPE="text" NAME="age" VALUE="" SIZE=20>
Example: (november 1,1966) <BR><BR><BR>
<INPUT TYPE="button" NAME="start" VALUE="Start Timer" ONCLICK="lifetimer(this.form)">

<INPUT TYPE="reset" NAME="resetb" VALUE="Reset Age">

<BR><BR>

<TABLE border=0>
<TR><TD>You are days old:</TD>

<TD>

<INPUT TYPE="text" NAME="time1" VALUE="" size=8>

</TD>

</TR>

<TR><TD>Plus hours old:</TD>

<TD>

<INPUT TYPE="text" NAME="time2" VALUE="" size=8>

</TD>

</TR>

<TR><TD>Plus minutes old:</TD>

<TD><INPUT TYPE="text" NAME="time3" VALUE="" size=8></TD>

</TR>
</TABLE>
</FORM>



    <br />

    </body>
    </html>

برنامه از:


از همون سایتی که چند پست بالاتر لینکش را دادم.

مشخصات برنامه :
کار با تکست ها ، خواندن تکست و نوشتن در تکست.
کار با تاریخ.
یک تابع در هد انداختیم و یک فرم در بادی داریم.
در تکست بالا وارد می کنیم ، بعد محاسباتی در تکست های پایینی نتیجه را می دهد.
من کاری ندارم محاسباتش چیه. قالب برنامه و کدهایش مورد نظر من است.

برای خوندن یا نوشتن در تکست ها ، اول کلمه داکیومنت را آورده بعد اسم فرم را آورده و بعد اسم تکست را و بعد کلمه value را.
JavaScript:
        document.live.time3.value = minsold

و تاریخ:
JavaScript:
today = new Date()
 
آخرین ویرایش:

saalek110

Well-Known Member
JavaScript:
<html>
    <head>

    </head>
    <body>

 

<form method="POST">

<table border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="100%">
<textarea rows="12" name="charcount" cols="60" wrap="virtual"></textarea>
      </td>
    </tr>
    <tr>
      <td width="100%"><div align="right"><p><input type="button" value="Calculate Characters"
      onClick="countit(this)"> <input type="text" name="displaycount" size="20"></p>
      <div align="center"><center><p>This free script provided by
      <a href="http://javascriptkit.com">JavaScript
      Kit</a></p>
      </center></div></div></td>
    </tr>
  </table>

</form>

<script language="JavaScript">

function countit(what){

//Character count script- by javascriptkit.com
//Visit JavaScript Kit (http://javascriptkit.com) for script
//Credit must stay intact for use

formcontent=what.form.charcount.value
what.form.displaycount.value=formcontent.length
}
</script>

    <br />

    </body>
    </html>

برنامه شمردن تعداد کاراکترهای textarea


در هد هیچی نداریم. همه در بادی است.
یک فرم داریم و یک تابع.
دکمه ای از فرم تابع را صدا می زند.

به تابع this ارسال شده و در تابع this را what گرفته و بعد کلمه what کلمه فرم و اسم textarea را نوشته و بعد کلمه value را نوشته.


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



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

شاید حتما لازم نباشه textarea باشه، شاید تکست هم بشود.
 
آخرین ویرایش:

saalek110

Well-Known Member
بررسی فرم.

رویداد onchange ، مثال لینک زیر برای select استفاده شده:


کاربری در لینک زیر :

نوشته:

These days listen for oninput. It feels like onchange without the need to lose focus on the element. It is HTML5.
یعنی روش زیر جایگزین onchange ‌‌است و فوکوس هم از دست نمی رود..

JavaScript:
const source = document.getElementById('source');
const result = document.getElementById('result');

const inputHandler = function(e) {
  result.innerText = e.target.value;
}

source.addEventListener('input', inputHandler);
source.addEventListener('propertychange', inputHandler);

سالک: منظور از source اون text ئی است که کاربر داره چیزی وارد می کنه. صفت name از text منظور نیست، صفت id از text را می گیره.
در ادامه کد این طوری نوشته:


JavaScript:
<input id="source">
<div id="result"></div>

و result یک div است تا تابع اونجا کار بکند و چیزی بنویسد.

HTML:
<div id='result'>


</div>
 
آخرین ویرایش:

saalek110

Well-Known Member
بررسی پسورد کاربر در php :

JavaScript:
public function betalk_checkPassword($betalkpwd, &$errors) {
    $errors_init = $errors;

    if (strlen($betalkpwd) < 8) {
        $errors[] = "رمزعبور حداقل باید 8 کاراکتر باشد";
    }
    if (!preg_match("#[0-9]+#", $betalkpwd)) {
        $errors[] = "حداقل باید یک عدد داخل رمزعبور باشد";
    }
    if (!preg_match("#[a-zA-Z]+#", $betalkpwd)) {
        $errors[] = "حداقل باید یک حرف انگلیسی داخل رمزعبور باشد";
    }
    if (!preg_match("#[A-Z]+#", $betalkpwd)) {
        $errors[] = "حداقل باید یک حرف انگلیسی بزرگ داخل رمزعبور باشد";
    }
    if (!preg_match("#/[\[^\'£$%^&*()}{@:\'#~?><>,;@\|\\\-=\-_+\-¬\`\]]/+#", $betalkpwd)) {
        $errors[] = "حداقل باید یک کاراکتر خاص داخل رمزعبور باشد";
    }

    return ($errors == $errors_init);
}

این کد برای php است ولی رگولار اکسپرژن که فرقی نداره.
سالک: کد بالا را من تست نکردم. از سایتی کپی کردم فقط.
 

saalek110

Well-Known Member
بررسی پسورد کاربر با جاوا اسکریپت.
البته این فانکشن آن است. فانکشن یا تابع را چیزی باید فعال کند.

JavaScript:
<script>
            function validatePassword(password) {
             
                // مخفی کردن پیام رمزعبور هنگامی که فیلد خالی است
                if (password.length === 0) {
                    document.getElementById("msg").innerHTML = "";
                    return;
                }
                // تعریف شرط برای کاراکترهای رمزعبور
                var matchedCase = new Array();
                matchedCase.push("[$@$!%*#?&]"); // کاراکترهای خاص
                matchedCase.push("[A-Z]");      // حروف بزرگ
                matchedCase.push("[0-9]");      // اعداد
                matchedCase.push("[a-z]");     // حروف کوچک

                // بررسی شرایط
                var ctr = 0;
                for (var i = 0; i < matchedCase.length; i++) {
                    if (new RegExp(matchedCase[i]).test(password)) {
                        ctr++;
                    }
                }
                // نمایش متن
                var color = "";
                var strength = "";
                switch (ctr) {
                    case 0:
                    case 1:
                    case 2:
                        strength = "بسیار ضعیف";
                        color = "red";
                        break;
                    case 3:
                        strength = "متوسط";
                        color = "orange";
                        break;
                    case 4:
                        strength = "قوی";
                        color = "green";
                        break;
                }
                document.getElementById("msg").innerHTML = strength;
                document.getElementById("msg").style.color = color;
            }
</script>

کد باتون:
JavaScript:
<button type="submit" onclick="validatePassword()">ثبت</button>
<span id="msg"></span>

سالک: برنامه بالا را من تست نکردم ، فقط نقل کردم.
 

saalek110

Well-Known Member
چند پست بالاتر ، کدی از سایت stackoverflow نقل شد



با کدهای زیر:

JavaScript:
const source = document.getElementById('source');
const result = document.getElementById('result');

const inputHandler = function(e) {
  result.innerText = e.target.value;
}

source.addEventListener('input', inputHandler);
source.addEventListener('propertychange', inputHandler);

فرم شما یک تکست دارد با id به نام source

در کد زیر ، خیلی خلاصه نوشته ، منظورش اینه یک ورودی مثل textداریم که id اش source است.

HTML:
<input id="source">
<div id="result"></div>

و دیگه کدهای div را هم ننوشته که ای کد است:
HTML:
<div id='result'>


</div>
 

saalek110

Well-Known Member
ادامه پست قبل:

نتیجه اش اینه که کاربر هر چی می نویسه در div نوشته میشه.

سالک: من با کمک گرفتن از سایت زیر:


تابع پست قبل را به شکل زیر تغییر دادم:

JavaScript:
const inputHandler = function(e) {
  result.innerText = e.target.value;
  var reg = /^([A-Z]){1}([a-z]){2,10}$/;
      if(reg.test(e.target.value) == false) {
                  alert('harfe aval bayad englisi bozorg bashad va 2 ta 10 harf kochak englisi badesh bashe');
                          return false;
                             }
      }

رگولار اکسپرژنی که من ساختم میگه حرف اول باید حرف بزرگ باشه و بعدش ۲ تا ۱۰ حرف انگلیسی کوچک بیاید.
برنامه را اجرا کردم ، هر وقت از الگوی مد نظر خارج میشد ، یک alert می اومد با یک پیام که این طوری باید اسمت باشه.

ایراداتی دارد ، مثلا:

وقتی کاربر هنوز حرف سوم را وارد نکرده میگه باید این طوری باشه اسمت ، خوب فرصت بده بنویسه ، بعد ایراد بگیر.
ولی از حرف سوم به بعد اعتراض نمی کنه و ساکت است ولی وقتی حرف ۱۲ ام وارد میشه باز اعتراض می کنه.

سالک: برای اینکه به کاربر فرصت بدهد چند حرف اول را بنویسید و مجازات قبل گناه نکند ، کد بررسی رگولار اکسپرزن را داخل این کد گذاشتم:


JavaScript:
let text = e.target.value;
let length = text.length;
if (length>3)
{


کد بررسی رگولار اکسپرژن

}
 
آخرین ویرایش:

saalek110

Well-Known Member
ادامه پست قبل:
با اصلاحیه ای که من وارد کردم تا حرف ۱۲ ام را وارد نکرده بود ، کد اعتراضی نکرد.
حتی اجازه میداد چند حرف اول را فارسی بنویسه.

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

سالک: به نظر من اصلاحیه خوبیه و باید اجازه بدهیم کاربر مقداری بنویسد ، بعد ایراد بگیریم.

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

saalek110

Well-Known Member
ادامه پست قبل:

اجاره اضافه کردن عدد بعد اسم:

حالا اگر اسمی که کاربر می خواد ثبت نام کنه ، (حالا فرص کنید فرم ثبت نام بوده ولی همیشه که فرم ثبت نام نیست...) را قبلا کس دیگری ثبت نام کرده...خوب کاربر باید عددی پشت اسم وارد کند.
پس رگولار اکسپرژن را من این طوری تغییر دادم:


JavaScript:
  var reg = /^([A-Z]){1}([a-z]){2,10}([0-9]){0,4}$/;

البته من زیاد در رگولار رکسپرژن حرفه ای نیستم ولی تست کردم دیدم درست کار می کنه ، یعنی بعد ۱۱ حرف اجازه می دهد ۴ تا عدد هم وارد شود. در مورد عدد صفر تا ۴ من نوشتم. یعنی کاربر می تونه اسم بی عدد وارد کنه ولی برای حرف کوچک حداقل ۲ حرف گرفتم. به اعداد داخل گیومه دقت کنید.

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

saalek110

Well-Known Member
تذکر داد ولی جلوگیری نکرد

کدی که من نوشتم alert می دهد. و کار دیگر نمی کند.
جاوا اسکریپت می تونه چیزهایی که کاربر نوشته را پاک کنه.

فکر کنم باید در قسمت php هم چک بزارم. چون کد من فقط alert داد.

اگر روی دکمه فرم کد می نوشتیم شاید می توانست جلوگیری کند از ادامه کار ، (الان کدش را ندارم..)
ولی فعلا که کد من روی تکست است و فقط alert می دهد.

بهرحال تمرینی در بالا کردیم. شاید بعدا کدهای دیگری با هم نوشتیم.

حالا اگر بخواهیم کد php هم بنویسیم ، کد رگولار اکسپرژنش همین است و آماده است و کاربر هم با جاوا اسکریپت پیامهایی دریافت کرده و تا حدی در جریان هست.
من همین رگولار اکسپرژن را برای php هم استفاده کردم.این طوری:

PHP:
$check = preg_match('/^([A-Z]){1}([a-z]){2,10}([0-9]){0,4}$/', $name);

 if (! $check   ) {
پیام دادم اسم شما مشکل دارد
و صفحه را بعد مدتی رفرش کردم.


       $error=1;

     echo "<meta http-equiv='refresh' content='70'>";

}

اون متغیر خطا که یک بشه اجازه ثبت نام نمی دهد. یعنی بعدا با چک اون متغیر ثبت نام انجام میشه.
 
آخرین ویرایش:

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

بالا