পাঠ্যধারার স্থানধারকের বৈশিষ্ট্যের ভিতরে লাইন বিরতি ?োকান?


179

আমি কয়েকটি পদ্ধতির চেষ্টা করেছি কিন্তু কোনওটিই কার্যকর হয়নি। এই কাছাকাছি পেতে কেউ কি নিফটি ট্রিক জানে?

<textarea placeholder='This is a line \n this should be a new line'></textarea>

<textarea placeholder='This is a line     
should this be a new line?'></textarea> <!-- this works in chrome apparently -->

আপডেট: এটি ক্রোমে কাজ করে না। এটি কেবল টেক্সারিয়া প্রস্থ ছিল।

দেখুন: http://jsfiddle.net/pdXRx/


2
পিএইচপি ব্যবহার করে, আপনি <?="\n"?>একটি নতুন লাইন হিসাবে রাখতে পারেন
rybo111

39
ঠিক &#10;যেমন স্থানধারক বৈশিষ্ট্যে যুক্ত করুন <textarea placeholder="This is a line&#10;This is another one"></textarea>। উত্তর নীচে নিচে।
lu1s

4
@ lu1s এটি ক্রোম, আইই তে কাজ করে তবে ফায়ারফক্স এবং সাফারিতে নয়।
এমবি 21

1
@ এমবি 21 আমি এটি ফায়ারফক্স .2০.০.২ এ এক মিনিট আগে পরীক্ষা করেছি এবং এখন এটি কার্যকর হয় works সম্ভবত এটি এখন বেশিরভাগ ব্রাউজারে কাজ করবে।
tsuma534

3
এটি 2020 এবং এখনও সাফারির কোনও সমাধান নেই?
আন

উত্তর:


61

আপনি যা করতে পারেন তা হ'ল পাঠ্যটি যুক্ত করুন value, যা লাইন ব্রেকটিকে সম্মান করে \n

$('textarea').attr('value', 'This is a line \nthis should be a new line');

তারপরে আপনি এটিকে অপসারণ করতে পারেন focusএবং এটি আবার প্রয়োগ করতে পারেন (খালি থাকলে) blur। এটার মতো কিছু

var placeholder = 'This is a line \nthis should be a new line';
$('textarea').attr('value', placeholder);

$('textarea').focus(function(){
    if($(this).val() === placeholder){
        $(this).attr('value', '');
    }
});

$('textarea').blur(function(){
    if($(this).val() ===''){
        $(this).attr('value', placeholder);
    }    
});

উদাহরণ: http://jsfiddle.net/airandfingers/pdXRx/247/

খাঁটি সিএসএস নয় এবং পরিষ্কার নয় তবে কৌশলটি করে।


4
আমি অবশ্যই জাভাস্ক্রিপ্ট ব্যবহার করে স্থানধারক প্রভাব জাল করতে পারি, তবে আমি আরও সাধারণ কিছু আশা করছিলাম
amosrieda

2
দুর্ভাগ্যক্রমে, @ এমোসিরিভেরা, কোনও স্ট্যান্ডার্ড উপায় নেই বলে মনে হয়: ডেভেলপার.মোজিলা.আর / এন / এইচটিএমএল / এইচটিএমএল 5/…, স্ক্রিপ্টযুক্ত কাজের বাইরে।
জেসন গেনারো

3
ভাল সমাধান, কিন্তু আমি যোগ হবে if($(this).val() == 'This is...')থেকে focus, হ্যান্ডলার অন্যথায় যদি আপনি কিছু পাঠ্য, তারপর ফোকাস হারান যোগ করুন, তারপর আবার পাঠ্য এলাকা ক্লিক করুন, আপনার লেখা যাবে না।
ডেনিস গোলোমাজভ

2
@ ডেনিসগোলোমাজভ ভাল সংযোজন; আমি স্রেফ ফোকাস হ্যান্ডলারটিতে চেক সহ একটি সম্পাদনা জমা দিয়েছি। আমি আমার পরিবর্তিত জেএসফিডাল উদাহরণটিতে এই আপডেটটিতে দেখানো হয়েছে, প্লেসহোল্ডার ক্লাস এবং স্টাইলিংধারীদের আলাদাভাবে যুক্ত করার পরামর্শ দিচ্ছি: jsfiddle.net/airandfingers/pdXRx/249
অ্যারন

ব্যবহারকারী যদি ইনপুট তৈরি করে যা ঠিক স্থানধারক পাঠ্যের সাথে মেলে, তাও কী মুছে যাবে না?
অর্জুন

274

আপনি &#10;স্থানধারক বৈশিষ্ট্যের ভিতরে একটি নতুন লাইন এইচটিএমএল সত্তা সন্নিবেশ করতে পারেন :

<textarea name="foo" placeholder="hello you&#10;Second line&#10;Third line"></textarea>

কাজ করে: Chrome 62, IE10, ফায়ারফক্স 60

কাজ করে না: সাফারি 11

https://jsfiddle.net/lu1s/bxkjLpag/2/


7
এটি মূল প্রশ্নটি যা চেয়েছিল ঠিক তাই করে। কেন এটি বেশি ভোট দেওয়া হয়নি? এটি প্রতিটি ব্রাউজারে কাজ করে না?
ডেভএলগার

9
@ ডেভ অ্যালগার - আসলে তা হয় না। আমি কেবল এফএফ-তে এটি চেষ্টা করেছি এবং এটি &#10;একটি শ্বেত স্পেস অক্ষর তৈরি না করেই আক্ষরিকভাবে মুদ্রণ করে । বিকাশকারী.মোজিলা.আর.এন.এইচ
এইচটিএমএল


1
ফায়ারফক্সের নতুন সংস্করণগুলিতে খুব ভাল কাজ করে
ii iml0sto1

10
ফায়ারফক্স 60 এ কাজ করে
রব পোর্টার

57

মনে হয় না যে আপনাকে এটি করার অনুমতি দেওয়া হয়েছে: http://www.w3.org/TR/html5/forms.html#the-placeholder-attribute

প্রাসঙ্গিক সামগ্রী (জোর আমার):

স্থানধারক বৈশিষ্ট্যটি একটি সংক্ষিপ্ত ইঙ্গিত (একটি শব্দ বা সংক্ষিপ্ত বাক্যাংশ) উপস্থাপন করে যা ব্যবহারকারীকে ডেটা এন্ট্রি দিয়ে সহায়তা করার উদ্দেশ্যে যখন নিয়ন্ত্রণের কোনও মূল্য থাকে না। একটি ইঙ্গিতটি একটি নমুনা মান বা প্রত্যাশিত বিন্যাসের একটি সংক্ষিপ্ত বিবরণ হতে পারে। বৈশিষ্ট্যটি যদি নির্দিষ্ট করা থাকে তবে অবশ্যই একটি মান থাকতে হবে যার মধ্যে কোনও U + 000A লাইন ফিড (এলএফ) বা ইউ + 000 ডি ক্যারিএজ রিটার্ন (সিআর) অক্ষর নেই।


নিবন্ধন করুন ঠিক আছে, বিক্রেতাদের উপযুক্ত দেখা ফ্যাশনে স্পেকটি ব্যাখ্যা করার অনুমতি দেওয়া হয়েছে।
টাইসন টি।

10
আমি একটি সরঞ্জাম, এটি একটি লাইন ভাঙার মত দেখতে লাগছিল কিন্তু বাস্তবে এটি কেবল
পাঠকের

3
@ এমসরিভেরা এলএল, কমপক্ষে আপনি এটি সম্পর্কে হাসতে পারেন, তাই না? চেষ্টা করে কিছুই হারায়নি ...:]
হারায়নি

1
উত্তরটি সঠিক। তবে আমি নিয়মকে মোটামুটি বাজে কথা বিবেচনা করি। "এলআর বা সিআর থাকা উচিত নয়" এর সঠিক যুক্তিটি কী?
জেনস এ। কোচ

2
@ জেনস-আন্দ্রেকোচ আমি যুক্তিটি ধরে নিয়েছি যে কোনও স্থানধারক সহজ হওয়া উচিত; যদি লাইন-ব্রেকগুলির প্রয়োজনের জন্য মানটি যথেষ্ট জটিল হয় তবে এটি একটি ভাইবোন উপাদান হিসাবে উপস্থিত থাকা উচিত, আপনি যদি এই মন্তব্য সম্পাদক দ্বারা "সহায়তা সহায়তা" লিঙ্কটি সক্রিয় করেন তবে আপনি যা দেখতে পান তার অনুরূপ। কোনও ইনপুটে সামগ্রীতে থাকা একবার কোনও স্থানধারক দৃশ্যমান হয় না ...
টাইসন টি

54

আপডেট (জানুয়ারী ২০১)): দুর্দান্ত ছোট্ট হ্যাকটি এখন সমস্ত ব্রাউজারগুলিতে আর কাজ করতে পারে না তাই নীচের জাভাস্ক্রিপ্টের সাথে আমার একটি ছোট সমাধান রয়েছে a


একটি সুন্দর লিটল হ্যাক

এটি দুর্দান্ত লাগছে না তবে আপনি এইচটিএমএলে নতুন লাইনগুলি রাখতে পারেন। এটার মত:

<textarea rows="6" id="myAddress" type="text" placeholder="My Awesome House,
        1 Long St
        London
        Postcode
        UK"></textarea>

লক্ষ্য করুন যে প্রতিটি লাইন একটি নতুন লাইনে রয়েছে (মোড়ানো হচ্ছে না) এবং প্রতিটি 'ট্যাব' ইনডেন্ট 4 টি স্পেস। অনুমোদিত যে এটি খুব সুন্দর পদ্ধতি নয় তবে এটি কাজ করে বলে মনে হচ্ছে:

http://jsfiddle.net/01taylop/HDfju/

  • এটি সম্ভবত আপনার পাঠ্য ক্ষেত্রের প্রস্থের উপর নির্ভর করে প্রতিটি লাইনের ইনডেন্ট স্তর পরিবর্তিত হবে।
  • এটা আছে গুরুত্বপূর্ণ resize: none;CSS এ যাতে পাঠ্য এলাকা আকার সংশোধন করা হয়েছে (jsfiddle দেখুন)।

বিকল্পভাবে আপনি যখন নতুন লাইন চান, দুবার রিটার্ন হিট করুন (সুতরাং আপনার 'নতুন লাইনের' মাঝে একটি ফাঁকা লাইন রয়েছে created এই 'খালি লাইন' তৈরির জন্য পর্যাপ্ত ট্যাব / স্পেস থাকতে হবে যা আপনার টেক্সারিয়ার প্রস্থের সাথে সমান হবে It আপনার কাছে খুব বেশি কিছু আছে কিনা তা মনে হচ্ছে না, আপনার কেবল যথেষ্ট দরকার This এটি যদিও এতই নোংরা এবং সম্ভবত ব্রাউজারের অনুগত নয় I আমার ইচ্ছা যদি আরও সহজ উপায় হত!


একটি ভাল সমাধান

পরীক্ষা করে দেখুন JSFiddle

  • এই সমাধানটি টেক্সারিয়ার পিছনে একটি ডিভ অবস্থান করে।
  • কিছু জাভাস্ক্রিপ্ট টেক্সারিয়ার পটভূমির রঙ পরিবর্তন করতে, স্থানধারককে যথাযথভাবে আড়াল বা প্রকাশ করতে ব্যবহৃত হয়।
  • ইনপুট এবং স্থানধারকদের অবশ্যই একই ফন্টের আকার থাকতে হবে, সুতরাং দুটি মিশ্রণ।
  • box-sizingএবংdisplay: block পাঠ্য এলাকা উপর বৈশিষ্ট্য গুরুত্বপূর্ণ বা এর পেছনে DIV আছে একই আকারের হবে না।
  • টেক্সারিয়ায় সেটিং resize: verticalএবং একটি min-heightসেটও গুরুত্বপূর্ণ - লক্ষ্য করুন যে স্থানধারক পাঠ্যটি কীভাবে মোড়ানো হবে এবং পাঠ্যকে প্রসারিত করা সাদা পটভূমি রাখবে। তবে, মন্তব্যresize সম্পত্তিটি কারণে যখন পাঠ্যকে অনুভূমিকভাবে প্রসারিত করা হবে তখন সমস্যা দেখা দেবে।
  • কেবল নিশ্চিত হয়ে নিন যে টেক্সটরিয়ায় ন্যূনতম উচ্চতা আপনার পুরো স্থানধারককে তার সর্বনিম্ন প্রস্থে কভার করার জন্য যথেষ্ট * **

জেএসফিডাল স্ক্রিনশট

এইচটিএমএল:

<form>
  <input type='text' placeholder='First Name' />
  <input type='text' placeholder='Last Name' />
  <div class='textarea-placeholder'>
    <textarea></textarea>
    <div>
      First Line
      <br /> Second Line
      <br /> Third Line
    </div>
  </div>
</form>

SCSS:

$input-padding: 4px;

@mixin input-font() {
  font-family: 'HelveticaNeue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
  font-size: 12px;
  font-weight: 300;
  line-height: 16px;
}

@mixin placeholder-style() {
  color: #999;
  @include input-font();
}

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

form {
  width: 250px;
}

input,textarea {
  display: block;
  width: 100%;
  padding: $input-padding;
  border: 1px solid #ccc;
}

input {
  margin-bottom: 10px;
  background-color: #fff;

  @include input-font();
}

textarea {
  min-height: 80px;
  resize: vertical;
  background-color: transparent;
  &.data-edits {
    background-color: #fff;
  }
}

.textarea-placeholder {
  position: relative;
  > div {
    position: absolute;
    z-index: -1;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    padding: $input-padding;
    background-color: #fff;
    @include placeholder-style();
  }
}

::-webkit-input-placeholder {
  @include placeholder-style();
}
:-moz-placeholder {
  @include placeholder-style();
}
::-moz-placeholder {
  @include placeholder-style();
}
:-ms-input-placeholder {
  @include placeholder-style();
}

javascript:

$("textarea").on('change keyup paste', function() {
  var length = $(this).val().length;
  if (length > 0) {
    $(this).addClass('data-edits');
  } else {
    $(this).removeClass('data-edits');
  }
});

খুব সুন্দর একটা হ্যাক। এটি অবশ্যই ক্রোমে কাজ করে। অন্যান্য বড় বড় ব্রাউজারগুলিতে আমরা কী এটি একইরূপে কাজ করতে পারি?
মার্ক আমেরিকা 1'13

2
আইইতে এটি পরীক্ষা করতে আমি কাউকে পছন্দ করব। আমি নিশ্চিত করতে পারি যে এটি সাফারি এবং ক্রোমের সর্বশেষতম সংস্করণগুলিতে কাজ করে তবে অবশ্যই ফায়ারফক্স নয় not আমি এখন স্থানধারকের পরিবর্তে পাঠ্য ব্যবহার করি এবং পাঠ্যধারকের মতো দেখতে টেক্সটটি তৈরি করতে একটি CSS শ্রেণি রয়েছে। তারপরে যখন ফোকাস থাকবে তখন পাঠ্যটি সাফ করার জন্য একটি ছোট jQuery ফাংশন - বা খালি থাকলে আবার রেখে দিন!
প্যাট্রিক

2
Chrome এবং IE 11 এ দুর্দান্ত কাজ করে তবে ফায়ারফক্স এবং অ্যান্ড্রয়েড ডিফল্ট ব্রাউজারে কাজ করে না।
রাসায়নিক প্রোগ্রামার

1
সাফারি, ফায়ারফক্স, অপেরা-তে কাজ করছেন না। শুধুমাত্র Chrome এ :( কাজ করে
by0

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, কারণ বর্তমানটি ফর্মের সাথে "স্থানধারক" মান জমা দিতে পারে। দ্রষ্টব্য: "একটি উন্নত সমাধান" এর অধীনে সমাধান ক্রস ব্রাউজারকে সঠিকভাবে কাজ করে। বিভিন্ন মন্তব্য মন্তব্য অবশ্যই "একটি ভাল লিটল হ্যাক" উল্লেখ করা উচিত।
রায় প্রিন্স

15

সিএসএস সমাধান সম্পর্কে কীভাবে: http://cssdeck.com/labs/07fwgrso

::-webkit-input-placeholder::before {
  content: "FIRST\000ASECOND\000ATHIRD";
}

::-moz-placeholder::before {
  content: "FIRST\000ASECOND\000ATHIRD";
}

:-ms-input-placeholder::before {
  content: "FIRST\000ASECOND\000ATHIRD";
}

2
এটি এখানে তালিকাভুক্ত সমস্তগুলির সেরা সমাধান, আইএমও।
এেন্ড্রু

এই সমাধানটি ফায়ারফক্সে কাজ করে না (22.0-28.0b9 এ পরীক্ষিত)।
হার্টভিগ

@ হার্টভিগ আমি আসলে এটি লক্ষ্য করেছি। কিছু কারণে ফায়ারফক্স এটি সঠিকভাবে পরিচালনা করে না। প্রকৃতপক্ষে এটি IE তে কাজ করে না ==> দুর্ভাগ্যক্রমে এটি কেবল ওয়েবকিট।
সামুলি হাকোনিমি

15

সালামুন আলেকুম

&#10;

গুগল ক্রোমের জন্য কাজ করে

এখানে চিত্র বর্ণনা লিখুন

<textarea placeholder="Enter Choice#1 &#10;Enter Choice#2 &#10;Enter Choice#3"></textarea>

আমি এটি উইন্ডোজ 10.0 (বিল্ড 10240) এবং গুগল ক্রোম সংস্করণ 47.0.2526.80 মি তে পরীক্ষা করেছি

08:43:08 এএসটি 6 রবি আল-আওয়াল, 1437 বৃহস্পতিবার, 17 ডিসেম্বর 2015

ধন্যবাদ


10

ব্রেকিং লাইনের জন্য কেবল & # 10 যুক্ত করুন, কোনও সিএসএস বা জাভাস্ক্রিপ্ট লেখার দরকার নেই।

textarea{
    width:300px;
    height:100px;

}
<textarea placeholder='This is a line this &#10should be a new line'></textarea>

<textarea placeholder=' This is a line 

should this be a new line?'></textarea>


9

পুরানো উত্তর:

নাহ, আপনি স্থানধারীর বৈশিষ্ট্যে এটি করতে পারবেন না। এমনকি &#13;&#10;কোনও স্থানধারকের মতো এইচটিএমএল এনকোড করা নিউলাইনগুলিও পারবেন না ।

নতুন উত্তর:

আধুনিক ব্রাউজারগুলি আপনাকে এটি করার বিভিন্ন উপায় দেয়। এই জেএসফিডেলটি দেখুন:

http://jsfiddle.net/pdXRx/5/


সহায়ক সহায়ক! সমাধান 2 আসলে সাফারিতে কাজ করে।
স্যান্ডিনমাইজয়েন্টস


6

এটা চেষ্টা কর:

<textarea
placeholder="Line1&#x0a;&#x09;&#x09;&#x09;Line2"
cols="10"
rows="5"
style="resize:none">
</textarea>

http://jsfiddle.net/vr79B/


এটি 1 ম বাক্যটির পরে কেবল কিছু জায়গার ট্যাবিং করছে এবং এটি আরও কলস বা নমনীয় প্রস্থে ব্যবহার করা যায় না।
জেফরি নিও

5

আপনি খাঁটি এইচটিএমএল দিয়ে এটি করতে পারবেন না, তবে এই jQuery প্লাগইন আপনাকে দেয়: https://github.com/bradjasper/jQuery- স্থানধারক- নিউজলাইন


ভাল, আমার পক্ষে কাজ করেছেন, আমি মান্থিয়া দ্বারা স্ট্যান্ডার্ড জ্যাকুয়ের.প্লেসোল্ডারকে এইটির সাথে প্রতিস্থাপন করেছি এবং এই কলগুলি প্রতিস্থাপন করতে হয়েছিল: $('input, textarea').placeholder();$('input[placeholder], textarea[placeholder]').placeholder();
এটির

4

জেসন জেনারোর জবাবের একটি সামান্য উন্নত সংস্করণ (কোড মন্তব্য দেখুন):

var placeholder = 'This is a line \nthis should be a new line';
$('textarea').attr('value', placeholder);
$('textarea').focus(function(){
    if($(this).val() == placeholder){
        // reset the value only if it equals the initial one    
        $(this).attr('value', '');
    }
});
$('textarea').blur(function(){
    if($(this).val() == ''){
        $(this).attr('value', placeholder);
    }    
});
// remove the focus, if it is on by default
$('textarea').blur();

4

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

http://jsfiddle.net/pdXRx/297/

<h1>Demo: 5 different textarea placeholder behaviors from a single JS</h1>

<h2>Modified behaviors</h2>

<!-- To get simulated placeholder with New Lines behavior,
     add the placeholdernl attribute -->

<textarea placeholdernl>    (click me to demo)
Johnny S. Fiddle
248 Fake St.
Atlanta, GA 30134</textarea>

<textarea placeholder='Address' placeholdernl>    (click me to demo)
Johnny S. Fiddle
248 Fake St.
Atlanta, GA 30134</textarea>

<h2>Standard behaviors</h2>

<textarea placeholder='Address'>    (delete me to demo)
Johnny S. Fiddle
248 Fake St.
Atlanta, GA 30134</textarea>

<textarea>    (delete me to demo)
Johnny S. Fiddle
248 Fake St.
Atlanta, GA 30134</textarea>

<textarea placeholder='Address'></textarea>

জাভাস্ক্রিপ্ট খুব সহজ

<script>
(function($){
var handleFocus = function(){
    var $this = $(this);
    if($this.val() === $this.attr('placeholdernl')){
        $this.attr('value', '');
        $this.css('color', '');
    }
};

var handleBlur = function(){
    var $this = $(this);
    if($this.val() == ''){
        $this.attr('value', $this.attr('placeholdernl'))
        $this.css('color', 'gray');
    }    
};

$('textarea[placeholdernl]').each(function(){
    var $this = $(this),
        value = $this.attr('value'),
        placeholder = $this.attr('placeholder');
    $this.attr('placeholdernl', value ? value : placeholder);
    $this.attr('value', '');
    $this.focus(handleFocus).blur(handleBlur).trigger('blur');
});
})(jQuery);
</script>

2

এইচটিএমএল

<textarea data-placeholder="1111\n2222"></textarea>

জাতীয়

$('textarea[data-placeholder]').each(function(){
    var $this = $(this),
        placeholder = $this.data('placeholder'),
        placeholderSplit = placeholder.split('\\n');
    placeholder = placeholderSplit.join('\n');
    $this.focus(function(){
        var $this = $(this);
        if($this.val() === placeholder){
            $this.val('');
            // $this.removeClass('placeholder');
        }
    }).blur(function(){
        var $this = $(this);
        if($this.val() == '') {
            $this.val(placeholder);
            // $this.addClass('placeholder');
        }
    }).trigger('blur');
});

2

টেক্সারিয়া স্থানধারকের জন্য শ্বেত-স্থানের বৈশিষ্ট্যকে সম্মান করে। https://www.w3schools.com/cssref/pr_text_white-space.asp

প্রাক-লাইনে সেট করা আমার জন্য সমস্যার সমাধান করেছে।

textarea {
  white-space: pre-line;
}
<textarea placeholder='This is a line     
should this be a new line'></textarea>


1

আমি @Richard Bronosky এর বেহালার পরিবর্তিত ভালো

এটি data-*কাস্টম অ্যাট্রিবিউটের চেয়ে অ্যাট্রিবিউট ব্যবহার করা ভাল । আমি প্রতিস্থাপিত <textarea placeholdernl>করতে <textarea data-placeholder>এবং কিছু অন্যান্য শৈলী হিসাবে ভাল।

সম্পাদিত
এখানে রিচার্ডের মূল উত্তর যা পুরো কোড স্নিপেট রয়েছে।


1
এটি আরও ভাল যে আপনি যখনই কোনও জিসফিডেল অন্তর্ভুক্ত করেন, তেমনি এখানেও কোডটি ব্যাখ্যা করুন এবং পেস্ট করুন, যাতে আমাদের আরও রেফারেন্সের জন্য এটি থাকে এবং আমাদের যে বিষয়বস্তুটি চিরতরে jsfiddle এ থাকবে তা নির্ভর করতে হবে না।
avcajaraville

আপনি ঠিক বলেছেন, @ অ্যাভকাজারভিল। তবে আমি পুরো কোড স্নিপেটটি অন্তর্ভুক্ত করি নি কারণ রিচার্ডের মূল উত্তরটি একই বিষয়ে, এবং আমার কেবল সাধারণ পরিবর্তন। পরিবর্তে, আমি তার উত্তর নির্দেশ।
গংডো গং

1

খুব সহজ

  var position = your break position;
    var breakLine = "&#13;&#10;";//in html 
    var output = [value.slice(0, position), breakLine, value.slice(position)].join('');
    return output;

মান মূল স্ট্রিং প্রতিনিধিত্ব করে


1

কাস্টম স্থানধারক সহ এই সমাধানটি দেখুন।

  • আপনি একাধিক স্থানধারক পাবেন যা সমস্ত ব্রাউজারগুলিতে কাজ করে (ফায়ারফক্স সহ)
  • আপনার পছন্দমতো স্থানধারকটিকে কাস্টমাইজ করতে পারা যায়

বেহালার উপর ডেমো

$(document).on('input', '#textArea', function () {
	
        if ($('#textArea').val()) {
            $('#placeholderDiv').hide();
        } else {
            $('#placeholderDiv').show();
        }   
});
#textAreaWrap {
    position: relative;
    background-color: white;
}

#textArea {
    position: relative;
    z-index: 1;
    width: 350px;
    height: 100px;
    min-height: 100px;
    padding: 6px 12px;
    resize: vertical;
    background-color: transparent;
    /* When set background-color: transparent - Firefox  displays
    unpleasant textarea border. Set border style to fix it.*/
    border: 1px solid #a5a5a5;
}

#placeholderDiv {
    position: absolute;
    top: 0;
    padding: 6px 13px;
    color: #a5a5a5;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="textAreaWrap">
    
<textarea id="textArea"></textarea>

<!-- Check here. If textarea has content -
     set for this div attribute style="display: none;" -->
<div id="placeholderDiv">Multiline textarea<br>
                         placeholder<br>
                         <br>
                         that works in Firefox</div>
    
</div>


0

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

সম্পাদনা করুন:

এটি এখন বিশেষ ক্ষেত্রগুলি হ্যান্ডল করে যেমন প্লেসহোল্ডারকে সঠিকভাবে .োকানো।

var textarea = document.getElementById("textarea");
new Placeholder(textarea, "Line 1\nLine 2\nLine 3");

function Placeholder(el, placeholder) {
    if (el.value == "" || el.value == placeholder) {
        el.style.color = "gray";
        el.value = placeholder;
        el._plc = true;
        el.className += " unselectable";
    }
    function keyPress(e) {
        window.setTimeout(function() {
            var replaced = reverseStr(el.value).replace(reverseStr(placeholder), "");
            
            if (el.value == "") {
                el.value = placeholder;
                el.style.color = "gray";
                cursorToStart(el);
                el._plc = true;
                el.className += " unselectable";
            } else if (el._plc && el.value.endsWith(placeholder) && replaced !== "") {
                el.value = reverseStr(replaced);
                el.style.color = "black";
                el._plc = false;
                el.readOnly = false;
                el.className = el.className.replace("unselectable", "");
            } else if (el._plc && el.readOnly) {
                var ch = String.fromCharCode(e.charCode);
                if (e.keyCode == 13) ch = "\n";     // ENTER
                else if (e.charCode == 0) return;   // non-character keys
                
                el.value = ch;
                el.style.color = "black";
                el._plc = false;
                el.readOnly = false;
                el.className = el.className.replace("unselectable", "");
            }
        }, 10);
    }
    el.addEventListener("keypress", keyPress, false);
    el.addEventListener("paste", keyPress, false);
    el.addEventListener("cut", keyPress, false);
    el.addEventListener("mousedown", function() {
        if (el._plc) el.readOnly = true;
    }, false);
    el.addEventListener("mouseup", function() {
        el.readOnly = false;
        if (el._plc) cursorToStart(el);
    }, false);
  
    function cursorToStart(input) {
        if (input.createTextRange) {
            var part = input.createTextRange();
            part.move("character", 0);
            part.select();
        } else if (input.setSelectionRange){
            input.setSelectionRange(0, 0);
        } input.focus();
    }
    function reverseStr(str) {
        if (!str) return "";
        return str.split("").reverse().join("");
    }
}
textarea {
    border: 1px solid gray;
    padding: 3px 6px;
    font-family: Arial;
    font-size: 13px;
    transition: .2s;
}
textarea:hover, textarea:focus {
    border-color: #2277cc;
}
textarea:focus {
    box-shadow: inset 0 0 5px #85B7E9;
}
*.unselectable {
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
}
<textarea id="textarea"></textarea>


0

স্থানধারক-প্রদর্শিত নির্বাচক এবং সুপার চাপিত ব্যাকগ্রাউন্ড ব্যবহার করে এই সমস্যাটি মোকাবেলা করা যেতে পারে, যদি আপনার প্রয়োগটি অনুমতি দেয়:

textarea:not(:placeholder-shown) {
  background: #fff;
}

div {
  top: 0;
  left: 14px;
  color: rgba(0,0,0,0.4);
  z-index: -1;
  position: absolute;
  line-height: 1.2;
  white-space: pre-wrap;
}

https://codepen.io/franciscoaquino/pen/YzyBPYK

নির্বাচক সমর্থন:

https://caniuse.com/#feat=css-placeholder-shown

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.