..


ลิงก์ผู้สนับสนุน

jQuery : แถบความคืบหน้าในการแสดง"เติม"จาก textarea

บทความที่เขียนโดย Riccardo Brambilla
หน้า 1 จาก 2

มักจะปัญหาดูเหมือนจะง่ายต่อการแก้พิสูจน์ที่ยากที่สุดกว่าที่คาดไว้และที่เป็นที่มักจะมีการสูญเสียครึ่งหนึ่ง extricating ทำงานของวันลองใหม่อีกครั้งมากกว่าหรือน้อยกว่าที่เป็นทางการและเป็นไข้เว็บไซต์ให้คำปรึกษา, หมดหวังสำหรับคนที่มีประสบอยู่แล้ว ปัญหา

เมื่อโครงการที่ผมจำเป็นต้อง จำกัด จำนวนตัวอักษรที่อนุญาตให้ใช้ใน textarea ฉันคิดว่าฉันแก้ไขได้ในไม่กี่นาทีที่มันไม่ได้ดังนั้นผมพบว่าการแก้ปัญหาหลายในสุทธิ แต่ไม่เชื่อฉันไปที่สิ้นสุดดังนั้นผมจึงตัดสินใจที่จะ ดำเนินการเองสิ่งที่ใช้ jQuery และดี jQueryUI , ในส่วนของ progessbar แพคเกจโดยเฉพาะอย่างยิ่ง

การกู้คืนไฟล์ที่จำเป็น

Colleghiamoci เพื่อ http://jqueryui.com/ และคลิกที่ปุ่ม"ดาวน์โหลดที่กำหนดเองสร้าง"ที่มุมขวาบน
ในหน้าถัดไปเลือกส่วนประกอบที่มีประโยชน์และหนึ่งในเครื่องมือที่มีอยู่เราตัดสินใจที่จะใช้เวลาเพียงใน ProgressBar

หน้า jQueryUI ดาวน์โหลดตัวเลือก
เราเลือกแม่แบบกราฟิกจากรายการแบบหล่นลงบนด้านขวาและคลิกที่"ดาวน์โหลด" Unzip แพคเกจที่คุณดาวน์โหลดเพียงและหาสามโฟลเดอร์และแฟ้มในราก :
  • โฟลเดอร์ CSS มีรูปแบบในกรณีของเราเริ่มต้น UI - ความสว่าง
  • การพัฒนากำ - มีตัวอย่างและเอกสารประกอบ
  • JS : มีทั้งสองไฟล์ที่จำเป็นในการทำงานแก้ปัญหาของเรา; jQuery และ jQuery UI - - 1.4.4.min.js - 1.8.9.custom.min.js
  • index.html : หน้าเว็บที่ช่วยให้เราสามารถดูตัวอย่างของธีม / เครื่องมือที่เราได้เลือก

ตัวอย่างเช่นขนาดเล็กของเราจะสร้างโครงสร้างง่ายดังนี้

  • โฟลเดอร์ที่แตกเพื่อ jQueryUI (jQuery - UI - 1.8.9.custom)
  • แพคเกจที่มี file.html textarea
  • file.js ที่มีรหัส jQuery

เราสร้างไฟล์ HTML ของเราให้มันเป็นชื่อที่มีความหมาย (เราจะเรียก mrw_jquery_txtcheck.html) และใส่ในการรวมแท็กหัวที่จำเป็น : เชื่อมโยงไปยังชุดรูปแบบของไฟล์ CSS และ JS jQuery และ jQueryUI






 href ="jquery-ui-1.8.9.custom/css/ui-lightness/jquery-ui-1.8.9.custom.css"<link type="text/css" rel="stylesheet" />







 <script type="text/javascript" src="jquery-ui-1.8.9.custom/js/jquery-1.4.4.min.js"> </ script>







 <script type="text/javascript" src="jquery-ui-1.8.9.custom/js/jquery-ui-1.8.9.custom.min.js"> </ script>



เพิ่ม textarea ในร่างกาย :

 



 <div> <textarea name="limitedOne" id="limitedOne" style='width:250px;height:100px;'> </ textarea> </ div>

 

จากนั้นใส่ div ที่มี ProgressBar และตัวยึดเพื่อให้คุณความคิดของกี่ตัวอักษรนอกจากนี้ยังมีตัวเลข






 <div style="height: id="progress" 20px;"> </ div>







 ใช้ได้ <p> <span id="charCounter"> 255 </ span> ตัวอักษร. </ p>



ตอนนี้เราสามารถดำเนินการเขียนโค้ดที่ไฟล์ JavaScript jQuery แยก / กับการทำงานที่จำเป็นที่แล้วยังรวมไว้ในแท็กหัวของเราจะเรียก check_textarea.js
แรกของทั้งหมดกำหนดตัวแปรพื้นฐานตัวอักษรได้รับอนุญาตและที่มีอยู่มีค่าเท่ากันที่จุดเริ่มต้น :






 MAX_CHARS = 255;







 ที่เหลือ MAX_CHARS =;



แล้วเรากำหนดฟังก์ชันที่ช่วยเพิ่มการควบคุมและการ ProgressBar และเคาน์เตอร์ :





 ฟังก์ชั่น checkTextareaLength () {





  



 == current_length ไม่ได้กำหนด var = $ ("# limitedOne"). Val () ความยาว.?

 



 0 : $ ("# limitedOne") Val () ยาว..



  



 ที่เหลือ = (MAX_CHARS -- current_length);



	

  



 (ถ้ามีที่เหลืออยู่> 0) {

	

    



 $ ("# LimitedOne") ($("# LimitedOne val") Substring Val () (0, MAX_CHARS))...;



  



 else {}



    



 $ ("# CharCounter") HTML (ที่เหลือ).;



    



 var pv = Math.floor ((((MAX_CHARS - คงเหลือ) / MAX_CHARS) * 100));



    



 ProgressBar $ ('ความคืบหน้า #') ('ค่า', PV.);



  



 }







 }



Let's วิเคราะห์รหัส : บรรทัดแรกใน checkTextareaLength ได้รับค่าปัจจุบันของ textarea ใช้ Val ฟังก์ชัน () jQuery แล้วนับจำนวนของอักขระที่ป้อนโดยการอ่านคุณลักษณะความยาว
ในบรรทัดถัดไปของจำนวนของอักขระที่สามารถใช้ได้สำหรับความแตกต่างให้ ณ จุดนี้มี 2 ความเป็นไปได้

1 ที่เหลือตัวแปรที่มีค่าน้อยกว่าศูนย์ (เช่นหลังจากคัดลอก / วาง) ถ้าบล็อก picks ขึ้นค่าของ textarea และขีด จำกัด ของมัน 255 ตัวอักษรโดยใช้ substring จาวาพื้นเมือง

 



 $ ("# LimitedOne") ($("# LimitedOne val") Substring Val () (0, MAX_CHARS))...;

 

2 ที่เหลืออยู่มีค่ามากกว่าศูนย์อื่นบล็อกในช่วงแรกจะเพิ่มขึ้นด้วยจำนวนของอักขระที่ยังเหลือ :

 



 $ ("# CharCounter") HTML (ที่เหลือ).;

 

แล้วฟังก์ชันจะคำนวณอัตราส่วนระหว่างจำนวนสูงสุดของอักขระที่มีอยู่และที่รวมขณะนี้รอบการทำงานห้องสมุด Math.floor ผลที่ได้ (ลง) เพื่อที่ใกล้ที่สุดที่ :

 



 var pv = Math.floor ((((MAX_CHARS - คงเหลือ) / MAX_CHARS) * 100));

 

ณ จุดนี้เราสามารถกำหนดค่าที่พบใน ProgressBar ที่

 



 ProgressBar $ ('ความคืบหน้า #') ('ค่า', PV.);

 

Let's เขียนโค้ดที่จะถูกดำเนินการใน DOM พร้อม
เราเริ่มต้นผูก progressbar และดำเนินกิจกรรมที่คุณต้องการที่จะขัดขวาง : KeyPress ที่ mouseout การเปลี่ยนแปลงและเบลอ การตรวจสอบพวกเขาทั้งหมดเพื่อตัดกรณีที่ผู้ใช้ควรจะใช้คัดลอก / วาง
โปรดทราบว่าการเรียกใช้ฟังก์ชันถูกเลื่อนออกไปโดยไม่กี่ร้อยของวินาทีผ่าน setTimeout ฟังก์ชันพื้นเมืองเพื่อให้แน่ใจว่ามักจะมีค่าในเวลาที่เหมาะสมเมื่อผู้ใช้มีการพิมพ์ข้อความเสร็จแล้ว






 $ ฟังก์ชัน (() {



  



 $ ("ความคืบหน้า #") ProgressBar ().;



  



 $ ("# LimitedOne.") ผูก ("KeyPress เปลี่ยน mouseout เบลอ', function () {



    



 setTimeout ("checkTextareaLength ()", 200);



  



 });







 });



ในประเภทเดียวกัน ...
E - Learning
CSS (หลักสูตร) CSS (หลักสูตร)
การออกแบบเว็บและการใช้งานตาม W3C CSS และ XHTML เริ่มต้นจาก 29 €
HTML (หลักสูตร) HTML (หลักสูตร)
ภาษามาร์คอัปสำหรับเว็บจาก 29 €
Javascript (หลักสูตร) Javascript (หลักสูตร)
คู่มือที่สมบูรณ์ในการเขียนสคริปต์ฝั่งไคลเอนต์ จาก 39 €
ลิงก์ผู้สนับสนุน