Изменить текст заполнителя с помощью jQuery - PullRequest
178 голосов
/ 10 февраля 2012

Я использую плагин-заполнитель 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();
        }
    });
});

My 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>

Кто-нибудь может понять это?

Ответы [ 9 ]

329 голосов
/ 31 октября 2012
$(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, это изменит весь текст заполнителя со всего сайта.

93 голосов
/ 10 сентября 2013

Вы можете использовать следующий код для обновления заполнителя по идентификатору:

$("#serMemtb").attr("placeholder", "Type a Location").val("").focus().blur();
11 голосов
/ 10 февраля 2012

Плагин не выглядит очень надежным.Если вы снова вызываете .placeholder(), он создает новый экземпляр Placeholder, в то время как события все еще привязаны к старому.

Глядя на код, похоже, что вы могли бы сделать:

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

РЕДАКТИРОВАТЬ

placeholder является атрибутом HTML5 , Угадайте, кто его не поддерживает?

Ваш плагин на самом деле не помогает вам преодолеть тот факт, что IE не поддерживает его, поэтому, пока мое решение работает, ваш плагин не поддерживает.Почему бы вам не найти тот, который делает.

10 голосов
/ 15 мая 2015

просто вы можете использовать

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

где, если переменная является строкой, вы можете использовать, как указано выше, если она является переменной, заменить ее именем типа «переменная» без двойных кавычек.

Например: $("#youtextboxid").attr("placeholder", variable); это будет работать.

8 голосов
/ 10 февраля 2012

$(this).val() - это строка. Используйте parseInt($(this).val(), 10) или отметьте «1». Десять обозначает базу 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 обратила мое внимание на то, что используемый вами плагин не преодолевает ошибку HTML в IE.

Попробуйте что-то вроде этого: http://archive.plugins.jquery.com/project/input-placeholder

2 голосов
/ 13 января 2015

рабочий пример динамического заполнителя с использованием 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");
}
}
1 голос
/ 10 февраля 2012

Перемещение вашей первой строки вниз делает это для меня: 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();
});
0 голосов
/ 05 июля 2019

Если вход находится внутри div, вы можете попробовать это:

$('#div_id input').attr("placeholder", "placeholder text");
0 голосов
/ 05 июля 2019

изменить текст заполнителя с помощью jquery

попробуйте это

$('#selector').attr("placeholder", "Type placeholder");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...