จำกัด จำนวนอักขระที่อนุญาตในช่องป้อนข้อความแบบฟอร์ม


115

ฉันจะ จำกัด หรือ จำกัด ผู้ใช้ให้ป้อนได้สูงสุดห้าอักขระในกล่องข้อความได้อย่างไร

ด้านล่างนี้เป็นช่องป้อนข้อมูลซึ่งเป็นส่วนหนึ่งของแบบฟอร์มของฉัน:

<input type="text" id="sessionNo" name="sessionNum" />

มันใช้อะไรเช่น maxSize หรืออะไรทำนองนั้น?


16
ที่นี่<input type="text" maxlength="5"> การสาธิตสด: jsfiddle.net/mcBbW/1
Šime Vidas

คำตอบ:


174

ความยาวสูงสุด :

จำนวนอักขระสูงสุดที่จะยอมรับเป็นอินพุต ซึ่งอาจมากกว่าที่ระบุโดย SIZE ซึ่งในกรณีนี้ช่องจะเลื่อนอย่างเหมาะสม ค่าเริ่มต้นคือไม่ จำกัด

<input type="text" maxlength="2" id="sessionNo" name="sessionNum" onkeypress="return isNumberKey(event)" />

อย่างไรก็ตามสิ่งนี้อาจได้รับหรือไม่ก็ได้รับผลกระทบจากตัวจัดการของคุณ คุณอาจต้องใช้หรือเพิ่มฟังก์ชันตัวจัดการอื่นเพื่อทดสอบความยาวเช่นกัน


ฉันพบว่าคำตอบนี้มีประโยชน์เมื่อ จำกัด ในขั้นตอนการป้อนข้อมูล นอกจากนี้คุณยังสามารถ จำกัด ไว้ในขั้นตอนการตรวจสอบความถูกต้องเมื่อส่งและแสดงข้อความตรวจสอบความถูกต้องโดยใช้patternแอตทริบิวต์ ดูstackoverflow.com/questions/10281962/…

31

วิธีที่ง่ายที่สุด:

maxlength="5"

ดังนั้น .. การเพิ่มแอตทริบิวต์นี้ในการควบคุมของคุณ:

<input type="text" 
    id="sessionNo" 
    name="sessionNum" 
    onkeypress="return isNumberKey(event)" 
    maxlength="5" />

8

เพิ่มสิ่งต่อไปนี้ในส่วนหัว:

<script language="javascript" type="text/javascript">
function limitText(limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    }
}
</script>

    <input type="text" id="sessionNo" name="sessionNum" onKeyDown="limitText(this,5);" 
onKeyUp="limitText(this,5);"" />

this.form.sessionNoดูเหมือนเป็นผู้ต้องสงสัยเล็กน้อย ทำไมไม่เพียงthis? นอกจากนี้limitCountและlimitNumยังดูเหมือนไม่เป็นระเบียบ / ไม่จำเป็น?
Jared Farrish

1
แก้ไขแล้ว การทำเช่นนี้หากคุณต้องการ จำกัด อักขระหรือตัวเลขบางตัวที่ทำได้ แต่ถ้าคุณไม่สนใจเรื่องนั้นความยาวสูงสุดก็จะใช้ได้ดี สมมติว่าคุณต้องการให้ค่าอยู่ระหว่าง 1-50 คุณสามารถทำได้หรือเป็นจำนวนบวกทั้งหมดเป็นต้น
b3verelabs

this.form.sessionNoยังดูเหมือนไม่ถูกต้อง thisในบริบทที่จะชี้ไปที่ไม่input document
Jared Farrish

ยังไม่ถูกต้องมันไม่ได้อ้างอิงformทั้ง. thisคือทั้งหมดที่คุณต้องการ นอกจากนี้ในทางเทคนิคถ้าคุณต้องการที่จะอ้างอิงองค์ประกอบโดยที่formมันจะมาจาก ( form/ input) nameไม่เช่น:id document.formName.sessionNum
Jared Farrish

ถูกต้องฉันพิมพ์เพื่ออดอาหารมันถูกห่อไว้ในแบบฟอร์มก่อนหน้านี้ แต่คุณเพียงแค่ส่งการอ้างอิงไปยังอินพุตในฟังก์ชันเพื่อรับค่าปัจจุบันของฟิลด์จากนั้นเพิ่มตรรกะที่คุณต้องการ จำกัด ฟิลด์นั้น
b3verelabs

8

ตามw3cค่าเริ่มต้นสำหรับแอตทริบิวต์ MAXLENGTH คือจำนวนที่ไม่ จำกัด ดังนั้นหากคุณไม่ระบุจำนวนสูงสุดผู้ใช้สามารถตัดและวางพระคัมภีร์สองสามครั้งและติดไว้ในแบบฟอร์มของคุณ

แม้ว่าคุณจะระบุ MAXLENGTH เป็นจำนวนที่เหมาะสมให้แน่ใจว่าคุณตรวจสอบความยาวของข้อมูลที่ส่งบนเซิร์ฟเวอร์อีกครั้งก่อนประมวลผล (โดยใช้ php หรือ asp) เนื่องจากมันค่อนข้างง่ายที่จะหลีกเลี่ยงข้อ จำกัด MAXLENGTH พื้นฐาน


1
@lopezdp มีหลายวิธีในการ "หลีกเลี่ยง" ข้อ จำกัด html / javascript วิธีตรวจสอบที่ง่ายที่สุดคือเปิดหน้าเว็บของคุณด้วย Chrome "ตรวจสอบองค์ประกอบ" และแก้ไข HTML ด้วยตนเอง วิธีที่ซับซ้อนมากขึ้นในการเดินทาง - เขียนสคริปต์ที่จะโพสต์ข้อมูลโดยไม่สนใจข้อ จำกัด ใด ๆ (โดยใช้ curl library หรือสิ่งที่คล้ายกัน) ในฐานะนักพัฒนาแบ็กเอนด์คุณไม่ควรไว้วางใจการตรวจสอบความถูกต้องของข้อมูลส่วนหน้ากฎทั้งหมดควรทำซ้ำบนเซิร์ฟเวอร์ การตรวจสอบความถูกต้องของส่วนหน้าเป็นเพียงวิธีการประหยัดเวลาสำหรับผู้ใช้โดยชี้ไปที่ข้อผิดพลาดที่ชัดเจนโดยไม่ต้องร้องขอไปยังเซิร์ฟเวอร์
Val Petruchek


4

ทำให้ง่ายขึ้น

<input type="text" maxlength="3" />

และใช้การแจ้งเตือนเพื่อแสดงว่ามีการใช้อักขระสูงสุดแล้ว


3

ฉันมักจะทำเช่นนี้:

$(document).ready(function(){
var maxChars = $("#sessionNum");
var max_length = maxChars.attr('maxlength');
if (max_length > 0) {
    maxChars.bind('keyup', function(e){
        length = new Number(maxChars.val().length);
        counter = max_length-length;
        $("#sessionNum_counter").text(counter);
    });
}
});

การป้อนข้อมูล:

<input name="sessionNum" id="sessionNum" maxlength="5" type="text">
Number of chars: <span id="sessionNum_counter">5</span>

2

maxlength

จำนวนอักขระสูงสุดที่จะยอมรับเป็นอินพุต แอตทริบิวต์ maxlength ระบุจำนวนอักขระสูงสุดที่อนุญาตในองค์ประกอบ

โรงเรียน Maxlength W3

<form action="/action_page.php">
    Username: <input type="text" name="usrname" maxlength="5"><br>
    <input type="submit" value="Submit">
</form>

1

คุณสามารถใช้ <input type = "text" maxlength="9"> หรือ

<input type = "number" maxlength="9">สำหรับหมายเลขหรือ <input type = "email" maxlength="9">สำหรับการตรวจสอบอีเมลจะปรากฏขึ้น


1
<input type="number" id="xxx" name="xxx" oninput="maxLengthCheck(this)" maxlength="10">

function maxLengthCheck(object) {
  if (object.value.length > object.maxLength)
  object.value = object.value.slice(0, object.maxLength)
}


0

รหัสต่อไปนี้มีการนับ ...

var count = 1;

do {
    function count_down(obj, count){

    let element = document.getElementById('count'+ count);

    element.innerHTML = 80 - obj.value.length;

    if(80 - obj.value.length < 5){
        element.style.color = "firebrick";
    }else{
        element.style.color = "#333";
    }
}
count++;
} while (count < 20); 
.text-input {
    padding: 8px 16px;
    width: 50%;
    margin-bottom: 5px;
    margin-top: 10px;
    font-size: 20px;
    font-weight: 700;
    font-family: Raleway;
    border: 1px solid dodgerblue;
  }
<p><input placeholder="Title" id="bike-input-title" onkeyup="count_down(this, 3)" maxlength="80"  class="text-input" name="bikeTitle" ></p>
        <span id="count3" style="float: right; font-family: Raleway; font-size:20px; font-weight:600; margin-top:-5px;">80</span><br>


-1
<input type="text" name="MobileNumber" id="MobileNumber" maxlength="10" onkeypress="checkNumber(event);"  placeholder="MobileNumber">

<script>
function checkNumber(key) {
  console.log(key);
  var inputNumber = document.querySelector("#MobileNumber").value;
  if(key.key >= 0 && key.key <= 9) {
    inputNumber += key.key;
  }
  else {
    key.preventDefault();
  }
}
</script>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.