jQuery를 사용하여 자리 표시 자 텍스트 변경


206

jQuery 자리 표시 자 플러그인 (https://github.com/danielstocks/jQuery-Placeholder)을 사용하고 있습니다. 드롭 다운 메뉴의 변경으로 자리 표시 자 텍스트를 변경해야합니다. 그러나 바뀌지 않습니다. 코드는 다음과 같습니다.

$(function () {
    $('input[placeholder], textarea[placeholder]').placeholder();
    $('#serMemdd').change(function () {
        var k = $(this).val();
        if (k == 1) {
            $("#serMemtb").attr("placeholder", "Type a name (Lastname, Firstname)").placeholder();
        }
        else if (k == 2) {
            $("#serMemtb").attr("placeholder", "Type an ID").placeholder();
        }
        else if (k == 3) {
            $("#serMemtb").attr("placeholder", "Type a Location").placeholder();
        }
    });
});

내 HTML :

<div class="filterbox">
        <select name="ddselect" id="serMemdd">
            <option value="1" selected="selected">Search by Name</option>
            <option value="2">Search by ID</option>
            <option value="3">Search by Location</option>
        </select>
        <input id="serMemtb" type="text" style="width: 490px" placeholder="Type a name    (Lastname, Firstname)" />
        <input id="seMemBut" type="button" value="Search" />
    </div>

누구든지 알아낼 수 있습니까?


HTML도 제공 할 수 있습니까?
Timothy Aaron

@TimothyAaron HTML을 제공했습니다
Krishh

@Blankasaurus-BS에는이 기능이 내장되어 있지 않습니다. 자리 표시 자 속성은 최신 브라우저에서 기본적으로 작동하지만 IE에는 polyfill이 없습니다 : github.com/twitter/bootstrap/issues/2401
Jannie Theunissen

답변:


367
$(document).ready(function(){ 
  $('form').find("input[type=textarea], input[type=password], textarea").each(function(ev)
  {
      if(!$(this).val()) { 
     $(this).attr("placeholder", "Type your answer here");
  }
  });
});

이 코드를 복사하여 js 파일에 붙여 넣으면 전체 사이트의 모든 자리 표시 자 텍스트가 변경됩니다.


1
if입력 요소에 값이 있는지 여부에 관계없이 일반적으로 자리 표시자를 설정하려는 것처럼-문을 생략해야합니다 . 그렇지 않으면 사용자가 입력 요소를 비우면 자리 표시자가 표시되지 않습니다.
isnot2bad

99

다음 코드를 사용하여 ID별로 자리 표시자를 업데이트 할 수 있습니다.

$("#serMemtb").attr("placeholder", "Type a Location").val("").focus().blur();

16

간단하게 사용할 수 있습니다

$("#yourtextboxid").attr("placeholder", "variable");

여기서 변수가 문자열이면 위와 같이 사용할 수 있습니다. 변수 인 경우 큰 따옴표없이 "variable"과 같은 이름으로 바꾸십시오.

예 : $("#youtextboxid").attr("placeholder", variable); 작동합니다.


13

플러그인은 매우 견고하지 않습니다. .placeholder()다시 호출하면 Placeholder이벤트가 이전 인스턴스에 계속 바인딩되어있는 동안 새 인스턴스 가 작성 됩니다.

코드를 보면 할 수있는 것처럼 보입니다.

$("#serMemtb").attr("placeholder", "Type a name (Lastname, Firstname)").blur();

편집하다

placeholder입니다 HTML5 속성 , 그것을 지원하지 않는 누가 생각은?

귀하의 플러그인은 IE가 지원하지 않는다는 사실을 극복하는 데 실제로 도움이되지 않는 것 같습니다. 따라서 내 솔루션이 작동하는 동안 플러그인은 지원하지 않습니다. 왜 그런 것을 찾지 않습니까?


8

$(this).val()문자열입니다. parseInt($(this).val(), 10)'1'을 사용 하거나 확인하십시오. 10은 밑 10을 나타냅니다.

$(function () {
    $('input[placeholder], textarea[placeholder]').blur();
    $('#serMemdd').change(function () {
        var k = $(this).val();
        if (k == '1') {
            $("#serMemtb").attr("placeholder", "Type a name (Lastname, Firstname)").blur();
        }
        else if (k == '2') {
            $("#serMemtb").attr("placeholder", "Type an ID").blur();
        }
        else if (k == '3') {
            $("#serMemtb").attr("placeholder", "Type a Location").blur();
        }
    });
});

또는

$(function () {
    $('input[placeholder], textarea[placeholder]').placeholder();
    $('#serMemdd').change(function () {
        var k = parseInt($(this).val(), 10);
        if (k == 1) {
            $("#serMemtb").attr("placeholder", "Type a name (Lastname, Firstname)").blur();
        }
        else if (k == 2) {
            $("#serMemtb").attr("placeholder", "Type an ID").blur();
        }
        else if (k == 3) {
            $("#serMemtb").attr("placeholder", "Type a Location").blur();
        }
    });
});

다른 플러그인

ori는 사용중인 플러그인이 IE의 HTML 실패를 극복하지 못한다는 것에 주목했습니다.

다음과 같이 시도하십시오 : http://archive.plugins.jquery.com/project/input-placeholder


OP에 대한 참고 사항 : 또한 변경 이벤트는 텍스트 입력이 아닌 선택 상자에 연결됩니다. $('#serMemdd').change(function () {
Benjam

serMemdd DDL을 기반으로 자리 표시 자 텍스트 컨텍스트를 민감하게 만들려고한다고 생각합니다. 난 몰라
Jason

그래, 그것은 나에게 보이는 것처럼 보이지만 그의 JS에서는 텍스트 이벤트에 연결된 변경 이벤트가 있습니다. 그렇기 때문에 코드를 모르는 경우 코드 변경 사항에 대한 메모를 작성했습니다.
Benjam

.placeholder ()가 두 번 이상 호출하면 내용이 엉망이되므로 blur ()로 답변이 업데이트되었습니다. 그것을 설정하려면 doc.ready에서 호출해야합니다.
Jason

<select name = "ddselect"id = "serMemdd">
Jason

2

Javascript 및 Jquery를 사용하는 동적 자리 표시 자의 실제 예 http://jsfiddle.net/ogk2L14n/1/

<input type="text" id="textbox">
 <select id="selection" onchange="changeplh()">
     <option>one</option>
     <option>two</option>
     <option>three</option>
    </select>

function changeplh(){
    debugger;
 var sel = document.getElementById("selection");
    var textbx = document.getElementById("textbox");
    var indexe = sel.selectedIndex;

    if(indexe == 0) { 
     $("#textbox").attr("placeholder", "age");

}
       if(indexe == 1) { 
     $("#textbox").attr("placeholder", "name");
}
}

2

jquery를 사용하여 자리 표시 자 텍스트 변경

이 시도

$('#selector').attr("placeholder", "Type placeholder");

1

첫 줄을 맨 아래로 옮기면 나를 위해 일합니다 : http://jsfiddle.net/tcloninger/SEmNX/

$(function () {
    $('#serMemdd').change(function () {
        var k = $(this).val();
        if (k == 1) {
            $("#serMemtb").attr("placeholder", "Type a name (Lastname, Firstname)").placeholder();
        }
        else if (k == 2) {
            $("#serMemtb").attr("placeholder", "Type an ID").placeholder();
        }
        else if (k == 3) {
            $("#serMemtb").attr("placeholder", "Type a Location").placeholder();
        }
    });
    $('input[placeholder], textarea[placeholder]').placeholder();
});

... 어쨌든 Chrome에서 자리 표시 자 속성이 변경됩니다. IE에서 확인하면 속성이 변경되지만 실제로 표시되지는 않습니다. 신뢰할 수있는 플러그인인지 확인 하시겠습니까?
Timothy Aaron

0

입력이 div 안에 있으면 다음을 시도하십시오.

$('#div_id input').attr("placeholder", "placeholder text");


0

이것은 나를 위해 일했다 :

jQuery('form').attr("placeholder","Wert eingeben");

하지만 이제는 작동하지 않습니다.

// Prioritize "important" elements on medium.
            skel.on('+medium -medium', function() {
                jQuery.prioritize(
                    '.important\\28 medium\\29',
                    skel.breakpoint('medium').active
                );
            });

0
$(document).ready(function(){ 
  $('form').find("input[type=search]").each(function(ev)
  {
     $(this).attr("placeholder", "Search Whatever you want");
  });
});

0
$(document).ready(function(){ 
     $("input[type=search]").attr("placeholder","this is a test");
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.