..
มักจะปัญหาดูเหมือนจะง่ายต่อการแก้พิสูจน์ที่ยากที่สุดกว่าที่คาดไว้และที่เป็นที่มักจะมีการสูญเสียครึ่งหนึ่ง extricating ทำงานของวันลองใหม่อีกครั้งมากกว่าหรือน้อยกว่าที่เป็นทางการและเป็นไข้เว็บไซต์ให้คำปรึกษา, หมดหวังสำหรับคนที่มีประสบอยู่แล้ว ปัญหา
เมื่อโครงการที่ผมจำเป็นต้อง จำกัด จำนวนตัวอักษรที่อนุญาตให้ใช้ใน textarea ฉันคิดว่าฉันแก้ไขได้ในไม่กี่นาทีที่มันไม่ได้ดังนั้นผมพบว่าการแก้ปัญหาหลายในสุทธิ แต่ไม่เชื่อฉันไปที่สิ้นสุดดังนั้นผมจึงตัดสินใจที่จะ ดำเนินการเองสิ่งที่ใช้ jQuery และดี jQueryUI , ในส่วนของ progessbar แพคเกจโดยเฉพาะอย่างยิ่ง
Colleghiamoci เพื่อ http://jqueryui.com/ และคลิกที่ปุ่ม"ดาวน์โหลดที่กำหนดเองสร้าง"ที่มุมขวาบน
ในหน้าถัดไปเลือกส่วนประกอบที่มีประโยชน์และหนึ่งในเครื่องมือที่มีอยู่เราตัดสินใจที่จะใช้เวลาเพียงใน ProgressBar

ตัวอย่างเช่นขนาดเล็กของเราจะสร้างโครงสร้างง่ายดังนี้
เราสร้างไฟล์ 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);
});
});
| |
CSS (หลักสูตร)
การออกแบบเว็บและการใช้งานตาม W3C CSS และ XHTML เริ่มต้นจาก 29 € |
| |
HTML (หลักสูตร)
ภาษามาร์คอัปสำหรับเว็บจาก 29 € |
| |
Javascript (หลักสูตร)
คู่มือที่สมบูรณ์ในการเขียนสคริปต์ฝั่งไคลเอนต์ จาก 39 € |