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

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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

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

EDIT

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

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

Ответ 4

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

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

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

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

Ответ 5

$(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

Ответ 6

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

Ответ 7

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

Ответ 8

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

попробуй это

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

Ответ 9

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

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