ইনপুট টাইপ = "তারিখ" ক্ষেত্রের জন্য স্থানধারক দেখানো হচ্ছে না


120

আমি একটি ফোনগ্যাপ অ্যাপ্লিকেশন করছি। আমি যখন type="date"নীচের চিত্রের মতো ইনপুট ফিল্ডটি চেষ্টা করছি তখন এটি আইফোনটিতে তারিখ চয়নকারীটি আমার প্রত্যাশা অনুযায়ী দেখায় তবে এটি আমার দেওয়া স্থানধারকটি প্রদর্শন করে না। আমি একই সমস্যাটি এখানে এসওতে পেয়েছি, তবে কোথাও কোনও সমাধান হয়নি।

 <input placeholder="Date" class="textbox-n" type="date" id="date">


উত্তর:


156

এটি উপযুক্ত নাও হতে পারে ... তবে এটি আমাকে সাহায্য করেছিল।

<input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" id="date">


7
একটি দুর্দান্ত বৈশিষ্ট্য বলে মনে হচ্ছে, তবে ক্ষেত্রটি ক্লিক করা ডেটপিকারের পরিবর্তে অনস্ক্রিন কীবোর্ড দেখায়। ভাল চেষ্টা যদিও।
ম্যাথিজস সেগার্স

2
@ ম্যাথিজসিজার্স আপনি কি এমন একটি সমাধান খুঁজে পেয়েছেন যা কীবোর্ডটি না দেখায়? আমি এই সমাধানগুলি এখানে চেষ্টা করেছি, তবে আইওএস 6, 7 এবং 8 এ, কিছু সময়ের জন্য কীবোর্ডটি দেখায় এবং তারপরে ডেটপিকারটি দেখায়।
জাবেল মার্কেজ

7
আচ্ছা হ্যাঁ এক জঘন্য। আমি ডেটফিল্ডে পাঠ্যক্ষেত্রের চেহারাগুলির সাথে একটি স্প্যান যোগ করেছি কেবলমাত্র আইওএস এ এটি দৃশ্যমান। ডেটপিকারের জেড সূচকটি স্প্যানের চেয়ে বেশি ছিল তবে সিএসএসে আলফা 0.01 ছিল। অনক্লিক আমি তারিখের ক্ষেত্রটি প্রকাশ করব। এটি কাজ করে তবে দারুণ বাজে।
ম্যাথিজস সেগারস 6

4
আমি লক্ষ্য করেছি যে এটি আইওএস ডিভাইসগুলিতে কাজ করে না, কারও কি এর সমাধান আছে?
মিক্কেল ফেনফস

3
কর্ডোভা অ্যাপ্লিকেশনগুলির জন্য, অনফোকাস ইভেন্টের পরিবর্তে অন-মাউসেন্টার ইভেন্টটি ব্যবহার করুন , তারপরে, তারিখ পিকারটি প্রথম ক্লিকে খোলা হবে
me

88

আপনি যদি এমভিপি এর পদ্ধতি ব্যবহার করেন তবে এটি আবার পাঠ্য ক্ষেত্রে ফিরিয়ে দিতে অনব্লুর ইভেন্টটি যুক্ত করুন যাতে ইনপুট ফিল্ডটি ফোকাস হারিয়ে ফেললে স্থানধারক পাঠ্যটি আবার উপস্থিত হয়। এটি হ্যাকটিকে কিছুটা সুন্দর করে তোলে।

<input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" onblur="(this.type='text')" id="date" />

আশাকরি এটা সাহায্য করবে.


1
ধন্যবাদ! এটি আমার জন্য পুরোপুরি কাজ করেন! আমি কি ক্ষেত্রটিকে অক্ষম করার পরামর্শ দিচ্ছি, এবং তারপরে ক্লিক করে অক্ষমকে অপসারণ করব? আমি কৌনিকটিতে কাজ করছিলাম, এবং প্রকারটি পরিবর্তন করতে এবং অক্ষমগুলি অপসারণ করার জন্য একটি স্কোপ ফাংশন লিখেছিলাম, যখন এটি কোনওভাবে পাঠ্য ক্ষেত্রে মনোনিবেশ করে তখন অদ্ভুত বাগগুলি থামিয়ে দেয়
Torch2424

2
আরও ভাল সমাধান। আপনাকে ধন্যবাদ
প্রোফস্টাইল

3
স্থানধারক যখন এটি ফোকাসের বাইরে চলে যায় তখন আমি দেখতে সক্ষম হয়েছি, তবে তারিখ চয়নকারীটি পেতে, আমাকে এটিতে দুবার ক্লিক করতে হবে। আমি কিভাবে এটা সমাধান করতে পারে?
সুরজ

1
আমি যে সন্ধান পেয়েছি তার সেরা সমাধানটি আপনাকে অনেক ধন্যবাদ
ফ্রান্স স্যান্ডি

3
চমৎকার! খুব উপযুক্ত সমাধান। : ডিআই আশা করি শীঘ্রই এইচটিএমএল 5 বা এইচটিএমএল 6 তারিখগুলিতে স্থানধারীদের অনুমতি দেবে। তবে আপাতত এটি খুব ভাল কাজ a : ডি
জেহজলাউ

35

আমি নিম্নলিখিত ব্যবহার করে শেষ।

ফায়ারফক্স মন্তব্য (গুলি) সম্পর্কিত : সাধারণত, ফায়ারফক্স ইনপুট টাইপের তারিখের জন্য কোনও পাঠ্য স্থানধারক প্রদর্শন করবে না। তবে এটি কর্ডোভা / ফোনগ্যাপ প্রশ্ন হিসাবে এটি কোনও উদ্বেগের বিষয় হওয়া উচিত নয় (যদি না আপনি ফায়ারফক্সসের বিরুদ্ধে বিকাশ করতে চান)।

input[type="date"]:not(.has-value):before{
  color: lightgray;
  content: attr(placeholder);
}
<input type="date" placeholder="MY PLACEHOLDER" onchange="this.className=(this.value!=''?'has-value':'')">


1
এই সংস্করণটি অন্য শ্রেণীর সাথে <input type="date" placeholder="MY PLACEHOLDER" onchange="this.classList.toggle('has-value',this.value);">
গণ্ডগোল

ভাল উত্তর ভাই, আপনি সেরা। আমি মাথা ব্যথা পর্যন্ত উত্তর খুঁজছি looking আপনাকে ধন্যবাদ
রোমান ট্র্যাভারসাইন

আমি এটি ব্যবহার করেছি এবং ইনপুটটি ফোকাস input[type="date"]:not(:focus):not(.has-value):beforeকরার সময় ফর্ম্যাটটি দেখানোর জন্য যুক্ত করেছি (যারা নির্বাচনের পরিবর্তে তারিখটি টাইপ করেন তাদের জন্য)
মার্কো সোমফক্স

20

আমি আমার সিএসএসে এটি ব্যবহার করেছি:

input[type="date"]:before{
    color:lightgray;
    content:attr(placeholder);
}

input[type="date"].full:before {
    color:black;
    content:""!important;
}

এবং জাভাস্ক্রিপ্টে এই মত কিছু করা:

$("#myel").on("input",function(){
    if($(this).val().length>0){
    $(this).addClass("full");
}
else{
   $(this).removeClass("full");
   }
 });

এটি মোবাইল ডিভাইসগুলির জন্য আমার জন্য কাজ করে (আইওএস 8 এবং অ্যান্ড্রয়েড)। তবে আমি ইনপুট পাঠ্যের ধরণের সাথে ডেস্কটপের জন্য jquery ইনপুটম্যাক ব্যবহার করেছি। যদি আপনার কোড ie8 এ চলে তবে এই সমাধানটি একটি দুর্দান্ত উপায়।


অ্যান্ড্রয়েডে আমার জন্য এখানে সেরা পছন্দ! সুন্দর!
Zappescu

অসাধারণ! কেবলমাত্র "পূর্ণ" শ্রেণীর প্রাথমিক অবস্থা সেট করতে হবে, যেমন আপনি কোনও বিদ্যমান তারিখ সম্পাদনা করছেন।
বিজের্ড

আমি পরামর্শ দিচ্ছি যে আমাদের color: #aaaআইওএসে একটি স্থানধারকের মতো চেহারা জন্য ব্যবহার করা উচিত । color: lightgrayঠিক খুব হালকা।
রকাল্লাইট

দুর্দান্ত উত্তর! আপনি কোড টগলক্লাস ব্যবহার করে jQueryটিকে আরও কিছুটা পাঠযোগ্য করে তোলেন: $("#myel").on( "input" , function(){ $(this).toggleClass( "full" , $(this).val().length > 0 ); });
মাইকে

18

আজকের (২০১ 2016) হিসাবে, আমি সফলভাবে এই 2 টি স্নিপেট ব্যবহার করেছি (প্লাস তারা বুটস্ট্র্যাপ 4 দিয়ে দুর্দান্ত কাজ করে)।

বামদিকে ইনপুট ডেটা, বামে স্থানধারক

input[type=date] {
  text-align: right;
}

input[type="date"]:before {
  color: lightgrey;
  content: attr(placeholder) !important;
  margin-right: 0.5em;
}

ক্লিক করার সময় স্থানধারক অদৃশ্য হয়ে যায়

input[type="date"]:before {
  color: lightgrey;
  content: attr(placeholder) !important;
  margin-right: 0.5em;
}
input[type="date"]:focus:before {
  content: '' !important;
}

পরিষ্কার এবং গোলমাল ছাড়াই কাজ করে।
ব্যবহারকারী 12379095

11

মতে এইচটিএমএল মান :

নিম্নোক্ত সামগ্রী বৈশিষ্ট্যাবলী নিদিষ্ট আবশ্যক করা এবং উপাদান ক্ষেত্রে প্রযোজ্য হবে না: Alt গ্রহণ, চেক করা থাকে, dirname, formaction, formenctype, formmethod, formnovalidate, formtarget, উচ্চতা, inputmode, MAXLENGTH, দয়া করে MINLENGTH, একাধিক, প্যাটার্ন, স্থানধারক , আকার src, এবং প্রস্থ।


তাহলে, আমি কি করব?
মুমতেজির ভিপি

2
@ এমভিপি, আপনার স্থানধারক বৈশিষ্ট্যটি ব্যবহার করা উচিত নয় এবং ইনপুট [টাইপ = তারিখ] এর সাথে যুক্ত <লেবেল> উপাদান যুক্ত করা উচিত নয়।
int32_t

এটি একটি স্থান ধারক মত চেহারা উচিত?
মুমতেজির ভিপি

2
লেবেল এবং স্থানধারকরা 2 টি আলাদা জিনিস। আপনি এখানে কী পরামর্শ দিচ্ছেন তা আমি বুঝতে পারি না।
অ্যাডেইনাক

2
এটিই একমাত্র সঠিক উত্তর। +1 টি। আশ্চর্য কি মানুষের সাথে! সবেমাত্র এই দ্বিগুণ লক্ষ্যমাত্রা থেকে আগত হয়েছে এবং গৃহীত উত্তরের ভোটের সংখ্যাটি দেখে অবাক হয়ে গেল :( স্পেসগুলি স্পষ্টভাবে বলেছে যে শব্দগুলি নির্দিষ্ট করা উচিত নয় এবং প্রয়োগ করা উচিত নয় , এখনও লোকেরা তাদের কৃপণ ওয়েব অ্যাপ্লিকেশনগুলিতে এটি জুতা দিতে চায় ।
অভিতালক 11 '18

10

এটা আমার জন্য কাজ করে:

input[type='date']:after {
  content: attr(placeholder)
}

3
আপনি যখন কোনও তারিখটি নির্বাচন করেন কেবল তখনই সমস্যাটি স্থানধারকটিকে সরিয়ে ফেলা হয়। জায়গা ধারক সরানো হয় না।
egr103

আইওএস 9.3 এ, সাফারি :afterএকটি তারিখ নির্বাচন করা হলে সিউডো উপাদানটি অদৃশ্য করে দেবে। সুতরাং স্থানধারক অপসারণ করার দরকার নেই
রকালাইট

2
onfocus="(this.placeholder='')"তারিখটি নির্বাচিত হয়ে গেলে কেবল স্থানধারককে সরাতে যুক্ত করুন ।
চক্রাকার

চমৎকার !!! আমার পক্ষেও কাজ করেছেন, @ রবিবিএনলান নিখুঁতভাবে কাজ করার পরামর্শ দিয়েছেন এমন অনফোকস যুক্ত করে।
ব্রুনো দে ফারিয়া

9

আমি এই হোয়াইট jQuery ব্যবহার করেছি: http://jsfiddle.net/daviderussoabram/65w1qhLz/

$('input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"]').each(function() {
    var el = this, type = $(el).attr('type');
    if ($(el).val() == '') $(el).attr('type', 'text');
    $(el).focus(function() {
        $(el).attr('type', type);
        el.click();
    });
    $(el).blur(function() {
        if ($(el).val() == '') $(el).attr('type', 'text');
    });
});

দয়া করে কেন এটি সহায়তা করবে তা ব্যাখ্যা যুক্ত করুন
জোহর

@ ডেভিড রুশো আব্রাম: দয়া করে ব্যাখ্যা যুক্ত করুন, এটি কীভাবে কাজ করে?
jsduniya

9

ডেডপ্রক্সর এবং অ্যালেসিও উত্তরগুলির ভিত্তিতে, আমি কেবল সিএসএস ব্যবহার করে চেষ্টা করব:

input[type="date"]::before{
    color: #999;
    content: attr(placeholder) ": ";
}
input[type="date"]:focus::before {
    content: "" !important;
}

এবং যদি আপনাকে ইনপুটটিতে কিছু লেখার পরে স্থানধারকটিকে অদৃশ্য করার প্রয়োজন হয়, আমরা আপনার বৈধতা যদি প্রয়োজনীয় হয় তবে: বৈধ এবং: অবৈধ নির্বাচকগুলি ব্যবহার করার চেষ্টা করতে পারি।

সম্পাদনা

আপনি যদি আপনার ইনপুটটিতে প্রয়োজনীয় ব্যবহার করেন তবে কোডটি এখানে:

input[type="date"]::before {
	color: #999999;
	content: attr(placeholder);
}
input[type="date"] {
	color: #ffffff;
}
input[type="date"]:focus,
input[type="date"]:valid {
	color: #666666;
}
input[type="date"]:focus::before,
input[type="date"]:valid::before {
	content: "" !important;
}
<input type="date" placeholder="Date" required>


9

আপনার সমস্যা সমাধানের আরও ভাল উপায় খুঁজে পেয়েছেন। আমি মনে করি এটি আপনাকে সাহায্য করবে। যখন ফোকাস করা হবে, বাক্সটি পাঠ্যের মধ্যে টাইপ পরিবর্তন করবে যাতে এটি আপনার স্থানধারকটি দেখায়। যখন ফোকাস করা হয় তখন এর ধরণটি তারিখে পরিবর্তিত হয় যাতে ক্যালেন্ডার ভিউ প্রদর্শিত হবে।

<input placeholder="Date" class="textbox-n" type="text" onfocusin="(this.type='date')" onfocusout="(this.type='text')"  id="date"> 

স্ট্যাক ওভারফ্লোতে স্বাগতম! আপনার সমাধান কীভাবে কাজ করে সে সম্পর্কে দয়া করে একটি সুন্দর বর্ণনা দেওয়ার চেষ্টা করুন। দেখুন: আমি কীভাবে ভাল উত্তর লিখব? । ধন্যবাদ
সানুন ןɐ কিউপি

6

আমি জবারলো আইডিয়া নিয়েছিলাম, তবে আমি যদি ওনব্লুর ফাংশনে একটি যুক্ত করেছি তবে মানগুলি খালি থাকলে ক্ষেত্রগুলি কেবল তার প্রকার পরিবর্তন করে

<input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" onblur="(this.value == '' ? this.type='text' : this.type='date')" id="date">

3

বর্তমান সঠিক উত্তরে সমস্যাটি সমাধান করা "ক্ষেত্রটি ক্লিক করে ডেটপিকারের পরিবর্তে অনস্ক্রিন কীবোর্ড দেখানো হয়":

ব্রাউজারটি (= পাঠ্য) ক্লিক করার সময় ইনপুটটির ধরণ অনুযায়ী আচরণ করার কারণে সমস্যাটি দেখা দেয়। সুতরাং ইনপুট উপাদানটির (ঝাপসা) দৃষ্টি নিবদ্ধ করা থেকে বিরত হওয়া এবং প্রথম ধাপে জেএস দ্বারা টাইপ = তারিখ হিসাবে সংজ্ঞায়িত ইনপুট উপাদানটির উপর প্রোগ্রামক্রমে ফোকাস পুনরায় চালু করা প্রয়োজন necessary ফোনেম্বার-মোডে কীবোর্ড প্রদর্শন করে।

<input placeholder="Date" type="text" onfocus="this.type='date';
                      this.setAttribute('onfocus','');this.blur();this.focus();">

এমনকি এই কোড সহ, আইওএসে (আইওএস 6, 7 এবং 8 এ পরীক্ষিত) একটি মুহুর্তের জন্য কীবোর্ডটি দেখায় এবং তারপরে ডেটপিকারটি দেখায়। কিবোর্ড না দেখানোর উপায় আছে?
জাবেল মার্কেজ

@ জাবেলমার্কেজ আপনি কীবোর্ডটি প্রদর্শন করা থেকে বিরত রাখতে পঠনযোগ্য = "সত্য" ব্যবহার করতে পারেন ... তাই এর মতো কিছু: <ইনপুট টাইপ = "পাঠ্য" নাম = "তারিখ" মান = "" স্থানধারক = "তারিখ" পঠনযোগ্য = "সত্য" onfocus = "this.removeAttribute ( 'কেবলমাত্র'); this.type = 'তারিখ'; this.setAttribute ( 'onfocus', ''); this.blur (); this.focus ();">। আমার জন্য কাজ করেছে।
pschueller

3

আমার সমাধান চেষ্টা করুন। ইনপুট পূরণ হয়েছে কিনা তা জানার জন্য আমি 'প্রয়োজনীয়' বৈশিষ্ট্যটি ব্যবহার করি এবং যদি না হয় তবে আমি 'স্থানধারক' অ্যাট্রিবিউট থেকে পাঠ্যটি প্রদর্শন করি

//HTML
<input required placeholder="Date" class="textbox-n" type="date" id="date">

//CSS
input[type="date"]:not(:valid):before {
   content: attr(placeholder);
   // style it like it real placeholder
}

1
ডিডি / মিমি / ইয়াই এখনও ক্রোমে প্রদর্শিত হচ্ছে (70)
স্ক্যানকাম

2

এটিকে বের করার জন্য আমাকে কিছুটা সময় নিয়েছে, এটিকে ছেড়ে যান type="text"এবং onfocus="(this.type='date')"উপরে যেমন দেখানো হয় তেমন যোগ করুন ।

এমনকি আমি উপরে উল্লিখিত অন্লুর ধারণাটিও পছন্দ করি

<input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" onblur="(this.type='text')" id="date">

আশা করি যে এটি উপরের যা কিছু ঘটেছে তা পুরোপুরি সংগ্রহ না করে এমনকে সহায়তা করে helps


2

তারিখ ইনপুট সমস্যার সংক্ষিপ্তসার হিসাবে:

  • আপনাকে সেগুলি প্রদর্শন করতে হবে (অর্থাত্ প্রদর্শন এড়ানো: কিছুই নয়) অন্যথায় ইনপুট ইউআই ট্রিগার করা হবে না;
  • কোনও স্থানধারক তাদের সাথে পরস্পরবিরোধী (অনুমান অনুসারে, এবং কারণ তাদের একটি নির্দিষ্ট ইউআই প্রদর্শন করতে হবে);
  • অপ্রয়োজনীয় সময়ের জন্য তাদের অন্য ইনপুট ধরণের রূপান্তর করা স্থানধারককে অনুমতি দেয় তবে ফোকাসের পরে কমপক্ষে কম সময়ের জন্য ভুল ইনপুট ইউআই (কীবোর্ড) ট্রিগার করে, কারণ ফোকাস ইভেন্টগুলি বাতিল করা যায় না।
  • beforeোকানো (আগে) বা যোগ করার পরে (পরে) তারিখের ইনপুট মানটি প্রদর্শিত হতে বাধা দেয় না।

এই প্রয়োজনীয়তাগুলি পূরণ করতে আমি যে সমাধানটি পেয়েছি তা হ'ল স্বাভাবিক কৌশলটি দেশীয় ফর্ম উপাদানগুলির স্টাইল করার জন্য: উপাদানটি প্রদর্শিত হয় তবে দৃশ্যমান নয় তা নিশ্চিত করুন এবং তার সম্পর্কিত লেবেলের মাধ্যমে তার প্রত্যাশিত শৈলীর প্রদর্শন করুন । সাধারণত, লেবেলটি ইনপুট হিসাবে প্রদর্শিত হবে (একটি স্থানধারক সহ), তবে এটির উপরে।

সুতরাং, এইচটিএমএল এর মতো:

<div class="date-input>
  <input id="myInput" type="date"> 
  <label for="myInput"> 
    <span class="place-holder">Enter a date</span> 
  </label>
</div>

হিসাবে স্টাইল করা যেতে পারে:

.date-input {
  display: inline-block;
  position: relative;
}
/* Fields overriding */
input[type=date] + label {
  position: absolute;  /* Same origin as the input, to display over it */
  background: white;   /* Opaque background to hide the input behind */
  left: 0;             /* Start at same x coordinate */
}

/* Common input styling */
input[type=date], label {  
  /* Must share same size to display properly (focus, etc.) */
  width: 15em;
  height: 1em;
  font-size: 1em;
}

এই জাতীয় সম্পর্কিত লেবেলে যে কোনও ইভেন্ট (ক্লিক করুন, ফোকাস করুন) তা ফিল্ডেই প্রতিফলিত হবে এবং তাই তারিখের ইনপুট ইউআই ট্রিগার করবে।

আপনি যদি এই জাতীয় সমাধানটি লাইভ পরীক্ষা করতে চান তবে আপনি নিজের ট্যাবলেট বা মোবাইল থেকে এই কৌনিক সংস্করণটি চালাতে পারেন ।


2

অবশেষে আমি যা করার সিদ্ধান্ত নিয়েছি তা এখানে এবং আইফোন এবং অ্যান্ড্রয়েড সহ সমস্ত মোবাইল ব্রাউজারগুলিতে এটি কাজ করে।

$(document).ready(function(){

  $('input[type="date"]').each(function(e) {
    var $el = $(this), 
        $this_placeholder = $(this).closest('label').find('.custom-placeholder');
    $el.on('change',function(){
      if($el.val()){
        $this_placeholder.text('');
      }else {
        $this_placeholder.text($el.attr('placeholder'));
      }
    });
  });
  
});
label {
  position: relative;  
}
.custom-placeholder {
    #font > .proxima-nova-light(26px,40px);
    position: absolute;
    top: 0;
    left: 0;
    z-index: 10;
    color: #999;
}
<label>
  <input type="date" placeholder="Date">
  <span class="custom-placeholder">Date</span>
</label>

তারিখ


2

আমি @ মমিথিজির দ্বারা সরবরাহিত আয়নিকফ্রেমওয়ার্ক এবং সমাধানের সাথে কাজ করছি প্রায় নিখুঁত। যদি কারও মতো আমার মতো সমস্যা হয় (পরিবর্তনের পরে, ইনপুটটি এখনও ফোকাস করা হয় এবং যখন স্ক্রোলিং হয় তখন মানটি কেবল অদৃশ্য হয়ে যায়) তাই আমি ইনপুট.ব্লুর করার জন্য অগ্রণী যোগ করেছি ()

<input placeholder="Date" class="textbox-n" type="text" onfocus=" (this.type='date')" onchange="this.blur();"  id="date"> 

2

আপনি পারেন

  1. টাইপ পাঠ্য হিসাবে সেট করুন
  2. ফোকাসে তারিখে রূপান্তর করুন
  3. এটি ক্লিক করুন
  4. ... ব্যবহারকারীর চেক তারিখ দিন
  5. পরিবর্তনের মান সংরক্ষণ করুন
  6. পাঠ্য টাইপ করতে ইনপুট সেট করুন
  7. সঞ্চিত মানটিতে পাঠ্যের ধরণের ইনপুট মান সেট করুন

এটার মত...

$("#dateplaceholder").change(function(evt) {
  var date = new Date($("#dateplaceholder").val());
  $("#dateplaceholder").attr("type", "text");
  $("#dateplaceholder").val(date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear());
});
$("#dateplaceholder").focus(function(evt) {
  $("#dateplaceholder").attr("type", "date");
  setTimeout('$("#dateplaceholder").click();', 500);
});
$("#dateplaceholder").attr("type", "text");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<input type="date" id="dateplaceholder" placeholder="Set the date" />


2

ক্লিকের উপর মাউসওভার এবং খোলার ডেটপিকারের সাথে ব্যবহারকারীর বেসিক বোধগম্যতা পরিচালনা করার একটি আরও ভাল উপায় খুঁজে পেয়েছে:

<input type="text" onfocus="(this.type='date')" onmouseover="(this.type = 'date')" onblur="(this.value ? this.type = 'date' : this.type = 'text')" id="date_start" placeholder="Date">

ওয়েবকিট তীরটিও লুকিয়ে রাখুন এবং ক্লিকটি কভার করতে এটি 100% প্রশস্ত করুন:

input[type="date"] {
    position: relative;
}
input[type="date"]::-webkit-calendar-picker-indicator {
  position: absolute;
  height: 100%;
  width: 100%;
  opacity: 0;
  left: 0;
  right: 0;
  top:0;
  bottom: 0;
}

1

কৌণিক দৃষ্টিকোণ থেকে আমি ইনপুট টাইপের তারিখের উপাদানটিতে একটি স্থানধারককে পরিচালনা করতে সক্ষম হয়েছি।

সবার আগে আমি নিম্নলিখিত সিএসএস সংজ্ঞায়িত করেছি:

.placeholder {
    color: $text-grey;
  }

  input[type='date']::before {
    content: attr(placeholder);
  }

  input::-webkit-input-placeholder {
    color: $text-grey;
  }

এটি প্রয়োজনীয় হওয়ার কারণটি হ'ল সিএসএস 3 বিষয়বস্তুর যদি সাধারণ স্থানধারকটির আলাদা রঙ থাকে তবে আমার একটি সাধারণ ব্যবহার করতে হয়েছিল।

<input #birthDate
         class="birthDate placeholder"
         type="date"
         formControlName="birthDate"
         placeholder="{{getBirthDatePlaceholder() | translate}}"
         [class.error]="!onboardingForm.controls.birthDate.valid && onboardingForm.controls.birthDate.dirty"
         autocomplete="off"
         >

তারপরে উপাদানটি থেকে এই ইনপুটটি অ্যাক্সেস করতে সক্ষম হওয়ার জন্য টেমপ্লেটে একটি ভিউচাইল্ড জন্ম তারিখের বৈশিষ্ট্যটি ব্যবহার করা হয়েছে। এবং স্থানধারক বৈশিষ্ট্যে একটি কৌণিক অভিব্যক্তি সংজ্ঞায়িত করা হয়েছে, যা সিদ্ধান্ত নেবে যে আমরা স্থানধারককে প্রদর্শন করব কিনা not এটি সমাধানের প্রধান অসুবিধা হ'ল এটি আপনাকে স্থানধারকের দৃশ্যমানতা পরিচালনা করতে হবে।

@ViewChild('birthDate') birthDate;

getBirthDatePlaceholder() {
  if (!this.birthDate) {
    return;
  } else {
    return this.birthDate.nativeElement.value === '' ?
    'ONBOARDING_FORM_COMPONENT.HINT_BIRTH_DATE' :
    '';
  }
}


1

আমি অবাক হয়েছি যে আমি ব্যবহার করেছি এর মত একটি পদ্ধতির সাথে একটি মাত্র উত্তর আছে।
@ মমতাজির ভিপির উত্তর সম্পর্কে ডটিপসনের মন্তব্য থেকে আমি অনুপ্রেরণা পেয়েছি।

আমি এর জন্য দুটি ইনপুট ব্যবহার করি, একটি হ'ল একটি জাল ইনপুট type="text"যার সাহায্যে আমি স্থানধারক সেট করি, অন্যটি হ'ল আসল ক্ষেত্র type="date"
উপর mouseenterতাদের ধারক এর ইভেন্টে আমি জাল ইনপুট লুকান এবং বাস্তব প্রদর্শন, এবং আমি উপর বিপরীত না mouseleaveইভেন্ট। স্পষ্টতই, আমি যদি এটির কোনও মান সেট করে থাকে তবে আমি আসল ইনপুট ভিজিবিলটি ছেড়ে যাই।
খাঁটি জাভাস্ক্রিপ্ট ব্যবহার করার জন্য আমি কোডটি লিখেছি তবে আপনি যদি jQuery ব্যবহার করেন (আমি করি) তবে এটি "রূপান্তর" করা খুব সহজ।

// "isMobile" function taken from this reply:
// https://stackoverflow.com/a/20293441/3514976
function isMobile() {
  try { document.createEvent("TouchEvent"); return true; }
  catch(e) { return false; }
}

var deviceIsMobile = isMobile();

function mouseEnterListener(event) {
  var realDate = this.querySelector('.real-date');
  // if it has a value it's already visible.
  if(!realDate.value) {
    this.querySelector('.fake-date').style.display = 'none';
    realDate.style.display = 'block';
  }
}

function mouseLeaveListener(event) {
  var realDate = this.querySelector('.real-date');
  // hide it if it doesn't have focus (except
  // on mobile devices) and has no value.
  if((deviceIsMobile || document.activeElement !== realDate) && !realDate.value) {
    realDate.style.display = 'none';
    this.querySelector('.fake-date').style.display = 'block';
  }
}

function fakeFieldActionListener(event) {
  event.preventDefault();
  this.parentElement.dispatchEvent(new Event('mouseenter'));
  var realDate = this.parentElement.querySelector('.real-date');
  // to open the datepicker on mobile devices
  // I need to focus and then click on the field.
  realDate.focus();
  realDate.click();
}

var containers = document.getElementsByClassName('date-container');
for(var i = 0; i < containers.length; ++i) {
  var container = containers[i];
  
  container.addEventListener('mouseenter', mouseEnterListener);
  container.addEventListener('mouseleave', mouseLeaveListener);
  
  var fakeDate = container.querySelector('.fake-date');
  // for mobile devices, clicking (tapping)
  // on the fake input must show the real one.
  fakeDate.addEventListener('click', fakeFieldActionListener);
  // let's also listen to the "focus" event
  // in case it's selected using a keyboard.
  fakeDate.addEventListener('focus', fakeFieldActionListener);
  
  var realDate = container.querySelector('.real-date');
  // trigger the "mouseleave" event on the
  // container when the value changes.
  realDate.addEventListener('change', function() {
    container.dispatchEvent(new Event('mouseleave'));
  });
  // also trigger the "mouseleave" event on
  // the container when the input loses focus.
  realDate.addEventListener('blur', function() {
    container.dispatchEvent(new Event('mouseleave'));
  });
}
.real-date {
  display: none;
}

/* a simple example of css to make 
them look like it's the same element */
.real-date, 
.fake-date {
  width: 200px;
  height: 20px;
  padding: 0px;
}
<div class="date-container">
  <input type="text" class="fake-date" placeholder="Insert date">
  <input type="date" class="real-date">
</div>

আমি এটি একটি অ্যান্ড্রয়েড ফোনেও পরীক্ষা করেছি এবং এটি কাজ করে, যখন ব্যবহারকারী ক্ষেত্রটিতে ডেটপিকারটি দেখানো হয়। একমাত্র বিষয়, যদি আসল ইনপুটটির কোনও মূল্য না থাকে এবং ব্যবহারকারী কোনও তারিখ না বেছে ডেটপিকারটি বন্ধ করে দেয় তবে ইনপুটটি তার বাইরে ট্যাপ করা অবধি দৃশ্যমান থাকবে। ডেটপিকারটি কখন বন্ধ হয় তা জানতে শোনার মতো কোনও অনুষ্ঠান নেই তাই আমি কীভাবে এটি সমাধান করব জানি না।

এটি পরীক্ষা করার জন্য আমার কাছে কোনও আইওএস ডিভাইস নেই।


0

@ এমভিপি'র সমাধানটি অব্যক্ত জাভাস্ক্রিপ্টটিকে মাথায় রেখে প্রসারিত করার পদ্ধতিটি এখানে:

এইচটিএমএল:

<input type="text" placeholder="Date" class="js-text-date-toggle">

javascript:

$('.js-text-date-toggle').on('focus', function() {
  $(this).attr('type', 'date') }
).on('blur', function() {
  $(this).attr('type'), 'text') }
)

0

আমি মনে করি আপনাকে যা করতে হবে তা হ'ল তারিখের ক্ষেত্রটি নালাগুলি বলার জন্য মডেলটি পরিবর্তন করতে হবে এবং তারপরে [প্রয়োজনীয়] লাগাতে হবে যদি এটি প্রয়োজন হয়। আপনি যদি এটি করেন তবে স্থানধারক পাঠ্যটি উপস্থিত হবে।


0

আরে তাই আমি গতরাতে একই সমস্যাটিতে পড়েছিলাম এবং আপনার উত্তরগুলির সমস্তটির সংমিশ্রণটি বের করেছিলাম এবং কিছু চমকপ্রদ যাদু ভাল কাজ করছে:

এইচটিএমএল:

<input type="date"  name="flb5" placeholder="Datum"     class="datePickerPlaceHolder"/>

সিএসএস:

@media(max-width: 1024px) {
   input.datePickerPlaceHolder:before {
      color: #A5A5A5; //here you have to match the placeholder color of other inputs
      content: attr(placeholder) !important;
   }
}

JQuery:

$(document).ready(function() {
    $('input[type="date"]').change(function(){
            if($(this).val().length < 1) {
                $(this).addClass('datePickerPlaceHolder');
            } else {
                $(this).removeClass('datePickerPlaceHolder');
            }
    });
});

ব্যাখ্যা: সুতরাং, এখানে যা হচ্ছে তা এইচটিএমএল প্রথমে , এটি বেশ সোজা এগিয়ে কেবল একটি বেসিক এইচএমটিএল 5-তারিখ-ইনপুট করে এবং একটি স্থানধারক সেট করে। পরবর্তী স্টপ: সিএসএস , আমরা একটি সেট করছি: পূর্বে সিউডো-এলিমেন্টটি আমাদের প্লেসোল্ডারকে নকল করতে, এটি কেবল ইনপুট থেকে প্লেসোল্ডারের বৈশিষ্ট্য নেয়। আমি এটি কেবলমাত্র 1024px এর ভিউপোর্টের প্রস্থের থেকে নীচে উপলব্ধ করেছি - কেন আমি পরে বলতে চাইছি। এবং এখন jQuery , কয়েকবার রিফ্যাক্ট করার পরে আমি এই বিট কোড নিয়ে এসেছি যা প্রতিটি পরিবর্তন পরীক্ষা করে দেখবে যদি কোনও মান সেট থাকে কি না, যদি তা না হয় (পুনরায়) শ্রেণিটি যুক্ত করে, তদ্বিপরীতভাবে ।

জানা বিষয়গুলি:

  • এর ডিফল্ট তারিখ-চয়নকারীকে নিয়ে ক্রোমে একটি সমস্যা রয়েছে, এটি মিডিয়া-ক্যোয়ারির জন্য রয়েছে ts এটি ডিফল্ট 'dd.mm.yyyy'- জিনিসের প্লেসহোল্ডার ইনফ্রন্ট যুক্ত করবে। আপনি তারিখ-ইনপুটটির স্থানধারকটিকে 'তারিখ:' তে সেট করতে পারেন এবং ইনপুটটির অভ্যন্তরে কোনও মূল্য না থাকলে রঙটি সামঞ্জস্য করতে পারেন ... আমার জন্য এটি কিছু অন্যান্য ছোট সমস্যার ফলস্বরূপ তাই আমি কেবল 'বড়' তে প্রদর্শন না করে চলে গেলাম 'পর্দা

আশা করি এইটি কাজ করবে! চীয়ারীত্ত!


0

আপনি যদি কেবল মোবাইল নিয়েই উদ্বিগ্ন হন:

input[type="date"]:invalid:before{
    color: rgb(117, 117, 117);
    content: attr(placeholder);
}

0

এইচটিএমএল:

<div>
    <input class="ui-btn ui-btn-icon-right ui-corner-all ui-icon-calendar ui-shadow" id="inputDate" type="date"/>
    <h3 id="placeholder-inputDate">Date Text</h3>
</div>

javascript:

$('#inputDate').ready(function () {
$('#placeholder-inputDate').attr('style'
    , 'top: ' + ($('#placeholder-inputDate').parent().position().top + 10)
    + 'px; left: ' + ($('#placeholder-inputDate').parent().position().left + 0) + 'px; position: absolute;');
$('#inputDate').attr('style'
    , 'width: ' + ($('#placeholder-inputDate').width() + 32) + 'px;');
});

কোনও ব্যাখ্যা ছাড়াই কোড পোস্ট করা এখানে স্বাগত নয়। আপনার পোস্ট সম্পাদনা করুন।
সিড

0

এখানে আরেকটি সম্ভাব্য হ্যাক জেএস ব্যবহার না করে এবং এখনও সিএসএস ব্যবহার করে না content। নোট করুন যে :afterইনপুটগুলির জন্য কিছু ব্রাউজারে সমর্থিত নয়, আমাদের অন্যভাবে ইনপুট নির্বাচন করতে হবে, একই জন্য samecontent attr('')

input[type=date]:invalid+span:after {
  content:"Birthday";
  position:absolute;
  left:0;
  top:0;
}

input[type=date]:focus:invalid+span:after {
  display:none;
}

input:not(:focus):invalid {
  color:transparent;
}

label.wrapper {
	position:relative;
}
<label class="wrapper">
	<input
 	  type="date"
  	  required="required" 
	/>
	<span></span>
</label>


0

এটি আমার জন্য ইনপুট উপাদান হিসাবে ব্যবহার করে:

<input name="birthdate" class="" class="wpcf7-form-control wpcf7-date 
 wpcf7-validates-as-required wpcf7-validates-as-date birthdate" value="" 
 aria-required="true" aria-invalid="false" placeholder="birthdate *" 
 type="date">

এই সিএসএস স্থায়ী স্থানধারক দেখায়। নির্বাচিত মানটি স্থানধারকের পরে প্রদর্শিত হবে।

input[type="date"]:before {
    content: attr(placeholder) !important;
    margin-right: 0.5em;
    display: block;
}
/* only for FF */
@-moz-document url-prefix() {
    input[type="date"]:before {
        content: attr(placeholder) !important;
        margin-right: 0.5em;
        display: block;
        position: absolute;
        left: 200px; /* please adopt */
    }
}

আমি এই সমাধানটি যোগাযোগ-ফর্ম -7 প্লাগইন সহ ওয়ার্ডপ্রেস ফর্মের জন্য ব্যবহার করি।


এই মোজ উপসর্গটি আমার জন্য এফএফ তে কাজ করছে না: /
সাওমি

0

আইওএস 12-এ ক্রোমের জন্য সমাধানগুলির কোনওটিই সঠিকভাবে কাজ করছে না এবং সেগুলির বেশিরভাগই কোনও পৃষ্ঠায় সম্ভাব্য একাধিক তারিখের ইনপুটগুলির সাথে মানিয়ে নেওয়ার জন্য উপযুক্ত নয়। আমি নিম্নলিখিতটি করেছিলাম, যা মূলত তারিখের ইনপুটটির উপর একটি জাল লেবেল তৈরি করে এবং এটিকে ট্যাপে সরিয়ে দেয়। ভিউপোর্টের প্রস্থ যদি 992px এর বাইরে হয় তবে আমি জাল লেবেলটিও সরিয়ে ফেলছি।

জাতীয়:

function addMobileDatePlaceholder() {
    if (window.matchMedia("(min-width: 992px)").matches) {
        $('input[type="date"]').next("span.date-label").remove();
        return false;
    }

    $('input[type="date"]').after('<span class="date-label" />');

    $('span.date-label').each(function() {
        var $placeholderText = $(this).prev('input[type="date"]').attr('placeholder');
        $(this).text($placeholderText);
    });

    $('input[type="date"]').on("click", function() {
        $(this).next("span.date-label").remove();
    });
}

সিএসএস:

@media (max-width: 991px) {
    input[type="date"] {
        padding-left: calc(50% - 45px);
    }

    span.date-label {
        pointer-events: none;
        position: absolute;
        top: 2px;
        left: 50%;
        transform: translateX(-50%);
        text-align: center;
        height: 27px;
        width: 70%;
        padding-top: 5px;
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.