Giới hạn số lượng ký tự được phép trong trường văn bản nhập mẫu


115

Làm cách nào để giới hạn hoặc hạn chế người dùng chỉ nhập tối đa năm ký tự trong hộp văn bản?

Dưới đây là trường đầu vào như một phần của biểu mẫu của tôi:

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

Có phải nó đang sử dụng một cái gì đó như maxSize hoặc một cái gì đó tương tự?


16
<input type="text" maxlength="5"> Bản demo trực tiếp tại đây : jsfiddle.net/mcBbW/1
Vidas

Câu trả lời:


174

tối đa :

Số lượng ký tự tối đa sẽ được chấp nhận làm đầu vào. Điều này có thể lớn hơn được chỉ định bởi SIZE, trong trường hợp đó, trường sẽ cuộn một cách thích hợp. Mặc định là không giới hạn.

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

Tuy nhiên, điều này có thể hoặc không thể bị ảnh hưởng bởi trình xử lý của bạn. Bạn cũng có thể cần phải sử dụng hoặc thêm một hàm xử lý khác để kiểm tra độ dài.


Tôi thấy câu trả lời này hữu ích khi giới hạn trong giai đoạn nhập liệu. Bạn cũng có thể giới hạn nó trong giai đoạn xác nhận khi gửi và bật lên một thông báo xác thực bằng patternthuộc tính. Xem stackoverflow.com/questions/10281962/

31

Cách đơn giản nhất để làm như vậy:

maxlength="5"

Vì vậy, .. Thêm thuộc tính này vào kiểm soát của bạn:

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

8

Thêm phần sau vào tiêu đề:

<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.sessionNocó vẻ hơi nghi ngờ. Tại sao không chỉ this? Ngoài ra, limitCountlimitNumcũng có vẻ ngoài trật tự / không cần thiết?
Jared Farrish

1
Đã sửa nó. Làm theo cách này nếu bạn muốn giới hạn nó ở một số ký tự hoặc số bạn có thể, nhưng nếu bạn không quan tâm đến điều đó thì Độ dài tối đa sẽ hoạt động tốt. Vì vậy, giả sử nếu bạn muốn các giá trị nằm trong khoảng 1-50, bạn có thể hoặc tất cả các số dương, v.v.
b3verelabs

this.form.sessionNovẫn không có vẻ đúng. thistrong bối cảnh đó sẽ chỉ đến input, không document.
Jared Farrish

Vẫn không đúng, nó cũng không tham khảo form. thislà tất cả những gì bạn cần. Ngoài ra, về mặt kỹ thuật nếu bạn muốn tham chiếu phần tử theo form, nó sẽ là ( form/ input) name, chứ không phải id:document.formName.sessionNum .
Jared Farrish

Đúng tôi đã gõ để nhanh nó được gói trong một hình thức trước đó. Nhưng bạn chỉ cần chuyển ref cho đầu vào vào hàm để lấy giá trị hiện tại của trường sau đó thêm bất kỳ logic nào bạn muốn để giới hạn trường đó.
b3verelabs

8

Theo w3c , giá trị mặc định cho thuộc tính MAXLENGTH là một số không giới hạn. Vì vậy, nếu bạn không chỉ định tối đa người dùng có thể cắt và dán kinh thánh một vài lần và dán nó vào biểu mẫu của bạn.

Ngay cả khi bạn chỉ định MAXLENGTH thành một số hợp lý, hãy đảm bảo bạn kiểm tra kỹ độ dài của dữ liệu đã gửi trên máy chủ trước khi xử lý (sử dụng một cái gì đó như php hoặc asp) vì dù sao cũng khá dễ dàng để vượt qua giới hạn MAXLENGTH cơ bản


1
@lopezdp, có nhiều cách để "khắc phục" các hạn chế html / javascript. Cách dễ nhất để kiểm tra là mở trang của bạn bằng Chrome, "kiểm tra phần tử" và sửa đổi HTML theo cách thủ công. Cách thức phức tạp hơn để có được xung quanh - viết một tập lệnh sẽ đăng dữ liệu bỏ qua mọi hạn chế (sử dụng thư viện curl hoặc một cái gì đó tương tự). Là một nhà phát triển phụ trợ, bạn không bao giờ nên tin tưởng xác thực dữ liệu frontend - tất cả các quy tắc nên được sao chép trên máy chủ. Xác thực Frontend chỉ là một cách để tiết kiệm thời gian cho người dùng bằng cách chỉ ra các lỗi rõ ràng mà không yêu cầu máy chủ.
Val Petruchek

4
<input type="text" maxlength="5">

số lượng chữ cái tối đa có thể có trong đầu vào là 5.


4

Làm cho nó đơn giản hơn

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

và sử dụng một cảnh báo để cho thấy rằng ký tự tối đa đã được sử dụng.


3

Tôi luôn luôn làm như thế này:

$(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);
    });
}
});

Đầu vào:

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

2

Tối đa

Số lượng ký tự tối đa sẽ được chấp nhận làm đầu vào. Thuộc tính maxlength chỉ định số lượng ký tự tối đa được phép trong phần tử.

Các trường W3 Maxlength

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

1

Bạn có thể sử dụng <input type = "text" maxlength="9"> hoặc

<input type = "number" maxlength="9">cho số hoặc <input type = "email" maxlength="9">xác thực email sẽ hiển thị


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

Sử dụng maxlenght = "số lượng charcters"

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

0

Đoạn mã sau bao gồm một ...

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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.