"সংখ্যা" প্রকারের এইচটিএমএল ইনপুট কেন 'e' অক্ষরটি ক্ষেত্রের মধ্যে প্রবেশ করতে দেয়?


216

আমার কাছে নিম্নলিখিত HTML5 ইনপুট উপাদান রয়েছে:

<input type="number">

এই ইনপুট কেন 'ই' অক্ষরটিকে ইনপুট ক্ষেত্রে প্রবেশের অনুমতি দেয়? অন্য কোনও বর্ণমালা অক্ষর প্রবেশ করতে সক্ষম নয় (আশানুরূপ হিসাবে)

ক্রোম বনাম 44.0.2403.107 ব্যবহার করা হচ্ছে

আমি কী বলতে চাইছি তা দেখতে: http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number


3
এটি আপনাকে .কয়েকটি ব্রাউজারে +, - এবং একাধিকবার প্রবেশ করার অনুমতি দেয় ।
নিউ এভারেস্ট

উত্তর:


217

কারণ ঠিক এইভাবেই অনুমানটি বলে যে এটি কাজ করা উচিত। সংখ্যার ইনপুটটি নেতিবাচক প্রতীক এবং বা অক্ষর সহ ভাসমান-পয়েন্ট সংখ্যাগুলি গ্রহণ করতে পারে (যেখানে ঘোরের সংখ্যাটি বা এর পরে সংখ্যা হয় ):eEeE

একটি ভাসমান-পয়েন্ট নম্বরটি নীচের অংশগুলি নিয়ে থাকে, ঠিক নীচের ক্রমে:

  1. .চ্ছিকভাবে, প্রথম অক্ষর একটি " -" অক্ষর হতে পারে ।
  2. " 0—9" সীমাতে এক বা একাধিক অক্ষর ।
  3. Ptionচ্ছিকভাবে, নিম্নলিখিত অংশগুলি, ঠিক নিম্নলিখিত ক্রমে:
    1. একটি " ." অক্ষর
    2. " 0—9" সীমাতে এক বা একাধিক অক্ষর
  4. Ptionচ্ছিকভাবে, নিম্নলিখিত অংশগুলি, ঠিক নিম্নলিখিত ক্রমে:
    1. একটি " e" অক্ষর বা " E" অক্ষর
    2. allyচ্ছিকভাবে, " -" অক্ষর বা " +" অক্ষর
    3. " 0—9" সীমাতে এক বা একাধিক অক্ষর ।

2
আহ, ধন্যবাদ আমি ভুল
ধারণাটি খুঁজছিলাম

4
আমি এখনও এ নিয়ে হতবাক, সবার আগে আমি গণিতবিদ নই, তবে সংখ্যার প্রসঙ্গে "ই" কী বোঝায়? দ্বিতীয় আমি কেন পাই না কারণ ইনপুট.মূল্যটি খালি একটি স্ট্রিং হিসাবে আপনি এটিতে "ই" লিখার সাথে সাথে সেখানে সংখ্যা রয়েছে এবং চরিত্রটির অনুমতি রয়েছে ...
সাইমন

9
@ সিমন, এটি ব্যবহার করে eবিপুল সংখ্যক ঘনীভূত হওয়ার জন্য দরকারী যা টাইপ করা অন্যথায় ক্লান্তিকর হবে। একটি তুচ্ছ উদাহরণ হিসাবে,2e2 = 2*10^2 = 200
Gnarlywhale

3
@ সিমন "আমি ই লিখার সাথে সাথেই" ভাল, হ্যাঁ "4e" একটি সংখ্যা নয়, উদাহরণস্বরূপ "4e + 0" একটি বৈধ সংখ্যা (4)। আপনার যদি কিছু "লাইভ" ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট কোড আংশিক ব্যবহারকারীর ইনপুট নিয়ে কাজ করে থাকে তবে আপনাকে ব্যবহারকারীকে পূর্ণ মূল্য সরবরাহ করতে তার ইনপুট সম্পাদনা শেষ করতে সময় দিতে হবে, এবং সম্পাদনায় অর্ধেক পথকে হস্তক্ষেপ করবেন না। আপনার যদি "4e + 0" ইনপুট থেকে "অপরিজ্ঞাত" থাকে তবে আপনার "সংখ্যায়" পার্সার ঠিক করুন। প্রশ্নের উদাহরণটি ভাল কাজ করে, "4e + 1" ত্রুটি হিসাবে রিপোর্ট করে এবং "4e + 0" "4e + 0" হিসাবে (যেমন 1 এবং 5 এর মধ্যে সংখ্যা) হিসাবে সঠিকভাবে ফিরে আসে is
পেড

4
@ অ্যান্টনি নং, eএক্সপোনেন্ট হিসাবে বিবেচিত।
স্কট মার্কাস

62

আমরা এটি নীচের মত সহজ করতে পারেন

<input type="number"  onkeydown="javascript: return event.keyCode == 69 ? false : true" />

আপডেট উত্তর

@ 88 এমপিজির পরামর্শ অনুসারে আমরা এটিকে আরও সহজ করতে পারি

<input type="number" onkeydown="return event.keyCode !== 69" />


17
return event.keyCode !== 69এটি একটি অপ্রয়োজনীয় টেরিনারি অপারেটরটিকে এড়িয়ে যাওয়ার কারণে ব্যবহার করা আরও ভাল । ইনলাইনিংয়ের পরামর্শ দিবে না।
অ্যাডাম ফ্রেটিনো 21

5
এটি অনুলিপি-আটকাতে eবা Eক্ষেত্রে প্রতিরোধ করে না
মলমাক

18

এইচটিএমএল ইনপুট নম্বর প্রকারটি "e / E" কে অনুমতি দেয় কারণ "e" হ'ল ক্ষুদ্রতর যা সংখ্যার প্রতীক।

উদাহরণ 200000 2e5 হিসাবেও লেখা যেতে পারে। আমি আশা করি এটি প্রশ্নের জন্য আপনাকে ধন্যবাদ সাহায্য করে।          


13

কেবলমাত্র সংখ্যার সমন্বয়ে সংখ্যার ব্যবহারকে বাধ্য করার সর্বোত্তম উপায় :

<input type="number" onkeydown="javascript: return event.keyCode === 8 ||
event.keyCode === 46 ? true : !isNaN(Number(event.key))" />

এটি 'ই', '-', '+', 'এড়িয়ে চলে। ... সমস্ত অক্ষর যে সংখ্যা নয়!

কেবল নম্বর কীগুলিকে অনুমতি দেওয়ার জন্য:

isNaN (নম্বর (event.key))

তবে "ব্যাকস্পেস" (কী কোড: 8) এবং "মুছুন" (কী কোড: 46) গ্রহণ করুন ...


11
<input type="number" onkeydown="return FilterInput(event)" onpaste="handlePaste(event)"  >

function FilterInput(event) {
    var keyCode = ('which' in event) ? event.which : event.keyCode;

    isNotWanted = (keyCode == 69 || keyCode == 101);
    return !isNotWanted;
};
function handlePaste (e) {
    var clipboardData, pastedData;

    // Get pasted data via clipboard API
    clipboardData = e.clipboardData || window.clipboardData;
    pastedData = clipboardData.getData('Text').toUpperCase();

    if(pastedData.indexOf('E')>-1) {
        //alert('found an E');
        e.stopPropagation();
        e.preventDefault();
    }
};

2
আপনি কতটা আত্মবিশ্বাসী যে এটি অনুলিপি এবং পেস্ট কার্যকারিতা সহ কোনও 'ই' অক্ষর সন্নিবেশ করানো আটকাবে?
স্টিফেনকেলজার

1
শুধু পরীক্ষা করা হয়েছে, আপনি সঠিক, এটি অনুলিপি এবং আটকানো ইনপুট জন্য কাজ করে না।
Gnarlywhale

আপনি সঠিক @ স্টেফেনকেলজার are আমি হ্যান্ডেল কোড যুক্ত।
ট্রুথসাইকার


3

কৌণিক ব্যবহার করে, আপনি ই, +, -, ই প্রবেশের সীমাবদ্ধ করতে এটি করতে পারেন

 <input type="number"  (keypress)="numericOnly($event)"/>


  numericOnly(event): boolean { // restrict e,+,-,E characters in  input type number
    debugger
    const charCode = (event.which) ? event.which : event.keyCode;
    if (charCode == 101 || charCode == 69 || charCode == 45 || charCode == 43) {
      return false;
    }
    return true;

  }

2
এটি ব্যবহারকারীর সেই চরিত্রটি প্রবেশ করতে বাধা দেবে ??
এমি

1
সাহায্যের জন্য ধন্যবাদ আমি কৌণিক ক্ষেত্রে একই সমাধানের সন্ধান করছিলাম তবে এখন আমি কীভাবে এটি করব সে সম্পর্কে আমার ধারণা আছে, আমি নির্দেশিকা তৈরি করব এবং আপনার পোস্টটির জন্য টাস্কটি সম্পন্ন করব
এমি

আপনি সেরা অনুশীলন যে নির্দেশিকা তৈরি করতে পারেন। পাশাপাশি আপনি নিজের উপাদানগুলির .ts ফাইলের মধ্যে সরাসরি করতে পারেন!
রিঙ্কু চৌধুরী

0

কৌণিক; আইডিই কী কোড সহ সতর্কতা অবলম্বন করেছে

কার্যত রিঙ্কুর উত্তর হিসাবে একই তবে আইডিই সতর্কতা প্রতিরোধের সাথে

numericOnly(event): boolean {
    // noinspection JSDeprecatedSymbols
    const charCode = (event.which) ? event.which : event.key || event.keyCode;  // keyCode is deprecated but needed for some browsers
    return !(charCode === 101 || charCode === 69 || charCode === 45 || charCode === 43);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.