Reputation: 4231
I am using a jQuery placeholder plugin(https://github.com/danielstocks/jQuery-Placeholder). I need to change the placeholder text with the change in dropdown menu. But it is not changing. Here is the code:
$(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>
Can anyone figure this out?
Upvotes: 261
Views: 612832
Reputation: 121
$(document).ready(function(){
$("input[type=search]").attr("placeholder","this is a test");
});
Upvotes: 10
Reputation: 121
$(document).ready(function(){
$('form').find("input[type=search]").each(function(ev)
{
$(this).attr("placeholder", "Search Whatever you want");
});
});
Upvotes: 2
Reputation:
this worked for me:
jQuery('form').attr("placeholder","Wert eingeben");
but now this don't work:
// Prioritize "important" elements on medium.
skel.on('+medium -medium', function() {
jQuery.prioritize(
'.important\\28 medium\\29',
skel.breakpoint('medium').active
);
});
Upvotes: 0
Reputation: 1124
try this
$('#Selector_ID').attr("placeholder", "your Placeholder");
Upvotes: 2
Reputation: 1124
If the input is inside the div than you can try this:
$('#div_id input').attr("placeholder", "placeholder text");
Upvotes: 2
Reputation: 1124
change placeholder text using jquery
try this
$('#selector').attr("placeholder", "Type placeholder");
Upvotes: 2
Reputation: 1031
You can use following code to update a placeholder by id:
$("#serMemtb").attr("placeholder", "Type a Location").val("").focus().blur();
Upvotes: 103
Reputation: 688
simply you can use
$("#yourtextboxid").attr("placeholder", "variable");
where, if variable is string then you can use like above, if it is variable replace it with the name like "variable" with out double quotes.
eg: $("#youtextboxid").attr("placeholder", variable);
it will work.
Upvotes: 30
Reputation: 145
working example of dynamic placeholder using Javascript and 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");
}
}
Upvotes: 4
Reputation: 4464
$(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");
}
});
});
Copy and paste this code in your js file, this will change all placeholder text from whole site.
Upvotes: 444
Reputation: 11615
$(this).val()
is a string. Use parseInt($(this).val(), 10)
or check for '1'. The ten is to denote base 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 has brought to my attention that the plugin you are using does not overcome IEs HTML failure.
Try something like this: http://archive.plugins.jquery.com/project/input-placeholder
Upvotes: 10
Reputation: 7847
The plugin doesn't look very robust. If you call .placeholder()
again, it creates a new Placeholder
instance while events are still bound to the old one.
Looking at the code, it looks like you could do:
$("#serMemtb").attr("placeholder", "Type a name (Lastname, Firstname)").blur();
EDIT
placeholder
is an HTML5 attribute, guess who's not supporting it?
Your plugin doesn't really seem to help you overcome the fact that IE doesn't support it, so while my solution works, your plugin doesn't. Why don't you find one that does.
Upvotes: 15
Reputation: 3078
Moving your first line to the bottom does it for me: 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();
});
Upvotes: 1