জন্য <input type="number">
উপাদান maxlength
কাজ করছে না। আমি কীভাবে maxlength
এই সংখ্যার উপাদানটির জন্য সীমাবদ্ধ রাখতে পারি ?
জন্য <input type="number">
উপাদান maxlength
কাজ করছে না। আমি কীভাবে maxlength
এই সংখ্যার উপাদানটির জন্য সীমাবদ্ধ রাখতে পারি ?
উত্তর:
এবং আপনি max
এমন একটি বৈশিষ্ট্য যুক্ত করতে পারেন যা সন্নিবেশ করতে পারে এমন সর্বোচ্চ সম্ভাব্য সংখ্যা নির্দিষ্ট করবে specify
<input type="number" max="999" />
আপনি যদি একটি max
এবং min
মান উভয় যোগ করেন তবে আপনি অনুমোদিত মানগুলির ব্যাপ্তি নির্দিষ্ট করতে পারেন:
<input type="number" min="1" max="999" />
উপরে বর্ণিত ব্যবহারকারীরা নির্দিষ্ট ব্যাপ্তির বাইরে ম্যানুয়ালি মান প্রবেশ করা থেকে বিরত থাকবে না । পরিবর্তে তিনি একটি পপআপ প্রদর্শিত হবে যা তাকে এই স্ক্রিনশটে প্রদর্শিত ফর্মটি জমা দেওয়ার পরে এই সীমার মধ্যে একটি মান লিখতে বলছে:
আপনি সেই বৈশিষ্ট্য min
এবং max
বৈশিষ্ট্যগুলি নির্দিষ্ট করতে পারেন যা কেবলমাত্র একটি নির্দিষ্ট ব্যাপ্তির মধ্যেই ইনপুটটিকে মঞ্জুরি দেয়।
<!-- equivalent to maxlength=4 -->
<input type="number" min="-9999" max="9999">
এটি কেবল স্পিনার নিয়ন্ত্রণ বোতামের জন্য কাজ করে। যদিও ব্যবহারকারী অনুমতিপ্রাপ্তের চেয়ে বড় সংখ্যা টাইপ করতে সক্ষম হতে পারেন max
তবে ফর্মটি জমা দেওয়া হবে না।
ক্রোম 15 থেকে নেওয়া স্ক্রিনশট
আপনি জাভাস্ক্রিপ্টে এইচটিএমএল 5 ইভেন্টটি অক্ষরের সংখ্যা সীমাবদ্ধ করতে ব্যবহার করতে পারেন oninput
:
myInput.oninput = function () {
if (this.value.length > 4) {
this.value = this.value.slice(0,4);
}
}
maxlength
আপনি যদি এমন কোনও মোবাইল ওয়েব সলিউশন সন্ধান করছেন যাটিতে আপনি আপনার ব্যবহারকারীকে পূর্ণ পাঠ্য কীবোর্ডের চেয়ে একটি নম্বর প্যাড দেখতে চান। প্রকার = "টেল" ব্যবহার করুন। এটি সর্বোচ্চ দৈর্ঘ্যের সাথে কাজ করবে যা আপনাকে অতিরিক্ত জাভাস্ক্রিপ্ট তৈরি থেকে বাঁচায়।
সর্বাধিক এবং ন্যূনতম ব্যবহারকারীর সর্বাধিক এবং ন্যূনতম পরিমাণে সংখ্যায় টাইপ করার মঞ্জুরি দেয় যা সর্বোত্তম নয়।
আপনি এইগুলির মতো এই সমস্তগুলি একত্রিত করতে পারেন:
<input name="myinput_drs"
oninput="maxLengthCheck(this)"
type = "number"
maxlength = "3"
min = "1"
max = "999" />
<script>
// This is an old version, for a more recent version look at
// https://jsfiddle.net/DRSDavidSoft/zb4ft1qq/2/
function maxLengthCheck(object)
{
if (object.value.length > object.maxLength)
object.value = object.value.slice(0, object.maxLength)
}
</script>
আপডেট:
আপনি কোনও অ-সংখ্যাসূচক অক্ষর প্রবেশ করানোও আটকাতে চাইতে পারেন, কারণ object.length
সংখ্যার ইনপুটগুলির জন্য খালি স্ট্রিং হবে এবং তাই এর দৈর্ঘ্য হবে 0
। সুতরাং maxLengthCheck
ফাংশন কাজ করবে না।
সমাধান:
উদাহরণগুলির জন্য এটি বা এটি
দেখুন ।
ডেমো : - এখানে কোডের পূর্ণ সংস্করণ দেখতে
http://jsfiddle.net/DRSDavidSoft/zb4ft1qq/1/
আপডেট 2: আপডেটের কোডটি এখানে: https://jsfiddle.net/DRSDavidSoft/zb4ft1qq/2/
আপডেট 3: দয়া করে নোট করুন যে দশমিকের চেয়ে বেশি পয়েন্ট প্রবেশের অনুমতি দেওয়ার সাথে অঙ্কের মানটি গোলমেলে যেতে পারে।
এটি খুব সহজ, কিছু জাভাস্ক্রিপ্টের সাহায্যে আপনি একটি অনুকরণ করতে পারেন maxlength
, এটি পরীক্ষা করে দেখুন:
//maxlength="2"
<input type="number" onKeyDown="if(this.value.length==2) return false;" />
keydown
হ'ল আপনি সর্বোচ্চ অক্ষরে ব্যাকস্পেস ব্যবহার করতে পারবেন না। সমস্যাটি keypress
হ'ল আপনি সর্বোচ্চ অক্ষরের বাইরেও + কপি করতে পারেন।
অথবা যদি আপনার সর্বাধিক মান উদাহরণস্বরূপ 99 এবং সর্বনিম্ন 0 হয় তবে আপনি এটি ইনপুট উপাদানটিতে যুক্ত করতে পারেন (আপনার মানটি আপনার সর্বোচ্চ মান ইত্যাদির মাধ্যমে আবার লিখতে হবে))
<input type="number" min="0" max="99"
onKeyUp="if(this.value>99){this.value='99';}else if(this.value<0){this.value='0';}"
id="yourid">
তারপরে (আপনি যদি চান), আপনি ইনপুটটি আসলেই নম্বর কিনা তা পরীক্ষা করতে পারেন
onKeyUp="if(this.value>this.max)this.value=this.max;if(this.value<this.min)this.value=this.min;"
আপনি এটি পাঠ্য হিসাবে নির্দিষ্ট করতে পারেন, তবে পেট্রন যুক্ত করুন, কেবল এটির মিলবে:
<input type="text" pattern="\d*" maxlength="2">
এটি নিখুঁত এবং মোবাইলেও কাজ করে (আইওএস 8 এবং অ্যান্ড্রয়েডে পরীক্ষিত) নম্বর কীবোর্ডকে আউট করে।
pattern
শুধুমাত্র বৈধতা হাইলাইট ঘটায়।
//For Angular I have attached following snippet.
<div ng-app="">
<form>
Enter number: <input type="number" ng-model="number" onKeyPress="if(this.value.length==7) return false;" min="0">
</form>
<h1>You entered: {{number}}</h1>
</div>
আপনি যদি "অ্যানকিপ্রেস" ইভেন্টটি ব্যবহার করেন তবে আপনি বিকাশের সময় কোনও ব্যবহারকারীর সীমাবদ্ধতা পাবেন না (ইউনিট এটি পরীক্ষা করুন)। এবং যদি আপনার এমন প্রয়োজনীয়তা থাকে যা ব্যবহারকারীকে নির্দিষ্ট সীমাবদ্ধতার পরে প্রবেশ করতে দেয় না তবে এই কোডটি একবার দেখুন এবং একবার চেষ্টা করুন।
আরেকটি বিকল্প হ'ল সর্বাধিক বৈশিষ্ট্যযুক্ত কোনও কিছুর জন্য শ্রোতা যুক্ত করা এবং এতে স্লাইস মান যুক্ত করা। ধরে নিচ্ছি ব্যবহারকারী ইনপুট সম্পর্কিত প্রতিটি ইভেন্টের ভিতরে কোনও ফাংশন ব্যবহার করতে চায় না। এখানে একটি কোড স্নিপেট। সিএসএস এবং এইচটিএমএল কোডটি উপেক্ষা করুন, জাভাস্ক্রিপ্টটি গুরুত্বপূর্ণ।
// Reusable Function to Enforce MaxLength
function enforce_maxlength(event) {
var t = event.target;
if (t.hasAttribute('maxlength')) {
t.value = t.value.slice(0, t.getAttribute('maxlength'));
}
}
// Global Listener for anything with an maxlength attribute.
// I put the listener on the body, put it on whatever.
document.body.addEventListener('input', enforce_maxlength);
label { margin: 10px; font-size: 16px; display: block }
input { margin: 0 10px 10px; padding: 5px; font-size: 24px; width: 100px }
span { margin: 0 10px 10px; display: block; font-size: 12px; color: #666 }
<label for="test_input">Text Input</label>
<input id="test_input" type="text" maxlength="5"/>
<span>set to 5 maxlength</span>
<br>
<label for="test_input">Number Input</label>
<input id="test_input" type="number" min="0" max="99" maxlength="2"/>
<span>set to 2 maxlength, min 0 and max 99</span>
সর্বোচ্চ দৈর্ঘ্যটি <input type="number"
আমি জানি সবচেয়ে ভাল উপায় সঙ্গে কাজ করবে না সর্বাধিক দৈর্ঘ্য oninput
সীমাবদ্ধ করার জন্য ইভেন্টটি ব্যবহার করা । সহজ বাস্তবায়নের জন্য নীচের কোডটি দেখুন।
<input name="somename"
oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
type = "number"
maxlength = "6"
/>
বলুন আপনি সর্বাধিক অনুমোদিত মানটি 1000 হতে চেয়েছিলেন - হয় টাইপ করুন বা স্পিনার দিয়ে।
আপনি ব্যবহার করে স্পিনার মান সীমাবদ্ধ:
type="number" min="0" max="1000"
এবং জাভাস্ক্রিপ্টের সাহায্যে কী-বোর্ড দ্বারা টাইপ করা হয়েছে তা সীমাবদ্ধ করুন:
onkeyup="if(parseInt(this.value)>1000){ this.value =1000; return false; }
"
<input type="number" min="0" max="1000" onkeyup="if(parseInt(this.value)>1000){ this.value =1000; return false; }">
অন্যদের দ্বারা যেমন বলা হয়েছে, ন্যূনতম / সর্বোচ্চ সর্বোচ্চ দৈর্ঘ্যের সমান নয় কারণ লোকেরা এখনও এমন একটি ভাসা প্রবেশ করতে পারে যা আপনার ইচ্ছা সর্বাধিক স্ট্রিং দৈর্ঘ্যের চেয়ে বড় হবে। প্রকৃতপক্ষে সর্বোচ্চ দৈর্ঘ্যের বৈশিষ্ট্যটি অনুকরণ করতে, আপনি একটি চিমটি এ জাতীয় কিছু করতে পারেন (এটি সর্বোচ্চ দৈর্ঘ্যের = "16" এর সমান):
<input type="number" oninput="if(value.length>16)value=value.slice(0,16)">
maxlength
সংখ্যা ইনপুট দ্বারা সমর্থিত নয়। আমার উদাহরণস্বরূপ, value.slice(0,16)
ইনপুট মান 16 টি অক্ষরের চেয়ে দীর্ঘ না হওয়া পর্যন্ত আরম্ভ করবে না।
type="number"
যত্ন নেবে :)।
মায়কো মৌরার উত্তরটি একটি ভাল শুরু ছিল। যাইহোক, তার সমাধানটির অর্থ হ'ল আপনি যখন দ্বিতীয় অঙ্কটি প্রবেশ করেন তখন ক্ষেত্রের সমস্ত সম্পাদনা বন্ধ হয়ে যায়। সুতরাং আপনি মান পরিবর্তন করতে বা কোনও অক্ষর মুছতে পারবেন না।
নিম্নলিখিত কোডটি 2 এ থামে, তবে সম্পাদনা চালিয়ে যেতে দেয়;
//MaxLength 2
onKeyDown="if(this.value.length==2) this.value = this.value.slice(0, - 1);"
আমার আগে এই সমস্যা ছিল এবং আমি এটি এইচটিএমএল 5 নম্বর টাইপ এবং জ্যাকুয়েরির সংমিশ্রণটি দিয়ে সমাধান করেছি solved
<input maxlength="2" min="0" max="59" name="minutes" value="0" type="number"/>
লিপি:
$("input[name='minutes']").on('keyup keypress blur change', function(e) {
//return false if not 0-9
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
return false;
}else{
//limit length but allow backspace so that you can still delete the numbers.
if( $(this).val().length >= parseInt($(this).attr('maxlength')) && (e.which != 8 && e.which != 0)){
return false;
}
}
});
আমি জানি না যে ঘটনাগুলি কিছুটা ওভারকিল হয় তবে এটি আমার সমস্যার সমাধান করে। JSfiddle
সংখ্যা ইনপুটগুলির জন্য সর্বোচ্চতা নির্ধারণের একটি সহজ উপায় হ'ল:
<input type="number" onkeypress="return this.value.length < 4;" oninput="if(this.value.length>=4) { this.value = this.value.slice(0,4); }" />
হিসাবে type="number"
, আপনি সম্পত্তি max
পরিবর্তে একটি নির্দিষ্ট করুন maxlength
, যা সর্বাধিক সম্ভাব্য সংখ্যা। 4 সংখ্যার সাথে , 5 টি সংখ্যা এবং অন্যান্য max
হওয়া উচিত ।9999
99999
এছাড়াও আপনি যদি এটি নিশ্চিত করতে চান যে এটি একটি ধনাত্মক সংখ্যা, আপনি সেট করতে পারেন min="0"
, ইতিবাচক সংখ্যাগুলি নিশ্চিত করে।
বিতৃষ্ণা। এটি এর মতো যে কেউ এটি প্রয়োগের অর্ধেক পথ ছেড়ে দিয়েছে এবং ভেবেছিল যে কেউ তা খেয়াল করবে না।
যে কারণেই হোক না কেন, উপরের উত্তরগুলি min
এবং max
গুণাবলী ব্যবহার করে না । এই jQuery এটি শেষ:
$('input[type="number"]').on('input change keyup paste', function () {
if (this.min) this.value = Math.max(parseInt(this.min), parseInt(this.value) || 0);
if (this.max) this.value = Math.min(parseInt(this.max), parseInt(this.value) || 0);
});
আপনার যদি সেই "jQuery-is-the-شیطان" প্রকারগুলির মধ্যে একটি হয় তবে এটি সম্ভবত একটি নামযুক্ত ফাংশন "অনিনপুট" w / o jQuery হিসাবেও কাজ করবে।
আমি খুঁজে পাওয়া যায় নি তোমাদের কেউ ব্যবহার করতে পারবেন না onkeydown
, onkeypress
বা onkeyup
মোবাইল ব্রাউজারে সহ সম্পূর্ণ সমাধান জন্য ইভেন্ট নেই। যাইহোক, অ্যান্ড্রয়েডের জন্য ক্রোম / অপেরাতেonkeypress
আর অবহিত করা হয় না এবং দেখুন (দেখুন: ইউআই ইভেন্টস ডাব্লু 3 সি ওয়ার্কিং ড্রাফ্ট, 04 আগস্ট 2016 )।
আমি oninput
কেবল ইভেন্টটি ব্যবহার করে একটি সমাধান বের করেছি । নেতিবাচক / ধনাত্মক চিহ্ন বা দশমিক এবং হাজার বিভাজক এবং এর মতো প্রয়োজনীয় হিসাবে অতিরিক্ত সংখ্যার চেকিং আপনাকে করতে হতে পারে তবে শুরু হিসাবে নিম্নলিখিতটি যথেষ্ট হবে:
function checkMaxLength(event) {
// Prepare to restore the previous value.
if (this.oldValue === undefined) {
this.oldValue = this.defaultValue;
}
if (this.value.length > this.maxLength) {
// Set back to the previous value.
this.value = oldVal;
}
else {
// Store the previous value.
this.oldValue = this.value;
// Make additional checks for +/- or ./, etc.
// Also consider to combine 'maxlength'
// with 'min' and 'max' to prevent wrong submits.
}
}
আমি উপরে একাধিকবার উল্লিখিত ভুল দাখিলের maxlength
সাথে একত্রিত হওয়ার min
এবং max
প্রতিরোধ করারও পরামর্শ দেব would
আমি জানি ইতিমধ্যে একটি উত্তর রয়েছে, তবে আপনি যদি চান যে আপনার ইনপুটটি maxlength
বৈশিষ্ট্যের মতো হ'ল বা যতটা কাছাকাছি আপনি আচরণ করতে চান তবে নীচের কোডটি ব্যবহার করুন:
(function($) {
methods = {
/*
* addMax will take the applied element and add a javascript behavior
* that will set the max length
*/
addMax: function() {
// set variables
var
maxlAttr = $(this).attr("maxlength"),
maxAttR = $(this).attr("max"),
x = 0,
max = "";
// If the element has maxlength apply the code.
if (typeof maxlAttr !== typeof undefined && maxlAttr !== false) {
// create a max equivelant
if (typeof maxlAttr !== typeof undefined && maxlAttr !== false){
while (x < maxlAttr) {
max += "9";
x++;
}
maxAttR = max;
}
// Permissible Keys that can be used while the input has reached maxlength
var keys = [
8, // backspace
9, // tab
13, // enter
46, // delete
37, 39, 38, 40 // arrow keys<^>v
]
// Apply changes to element
$(this)
.attr("max", maxAttR) //add existing max or new max
.keydown(function(event) {
// restrict key press on length reached unless key being used is in keys array or there is highlighted text
if ($(this).val().length == maxlAttr && $.inArray(event.which, keys) == -1 && methods.isTextSelected() == false) return false;
});;
}
},
/*
* isTextSelected returns true if there is a selection on the page.
* This is so that if the user selects text and then presses a number
* it will behave as normal by replacing the selection with the value
* of the key pressed.
*/
isTextSelected: function() {
// set text variable
text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return (text.length > 0);
}
};
$.maxlengthNumber = function(){
// Get all number inputs that have maxlength
methods.addMax.call($("input[type=number]"));
}
})($)
// Apply it:
$.maxlengthNumber();
এটি কাউকে সাহায্য করতে পারে।
সামান্য জাভাস্ক্রিপ্টের সাহায্যে আপনি সমস্ত ডেটটাইম-লোকাল ইনপুট অনুসন্ধান করতে পারেন, ব্যবহারকারী যে বছর ইনপুট দেওয়ার চেষ্টা করছে তা অনুসন্ধান করুন, ভবিষ্যতে এটি 100 বছরেরও বেশি:
$('input[type=datetime-local]').each(function( index ) {
$(this).change(function() {
var today = new Date();
var date = new Date(this.value);
var yearFuture = new Date();
yearFuture.setFullYear(yearFuture.getFullYear()+100);
if(date.getFullYear() > yearFuture.getFullYear()) {
this.value = today.getFullYear() + this.value.slice(4);
}
})
});