I am new to ruby on rails and twitter bootstrap. Accept my apologize if my question sound dumb. I am using twitter bootstrap for my site design. I have been trying to use bootstrap to change my label to textbox using hyperlink button click.
<div class="control-group">
<label for="name" class="control-label"><p class="text-info">Saghir<i class="icon-star"></i></p></label>
<div class="controls">
<a href="#">Edit</a>
</div>
but I am unable to do so, should I use jquery to do so, or I can use bootstrap for that. Please point me to right direction. Thanks in advance
Edit Code is updated with hyperlink(it could be button too). it is like, when I click on "Edit" hyperlink my label should show content "Saghir" that can be used using placeholder attribute of bootstrap. I can submit form to update values to database.
As Chris said, Bootstrap
does not provide this functionality as it is a front-end framework. you can use jQuery
to achieve this. Though, you'll need to add some custom id's or classes to your elements to make sure you are only selecting the required elements. You can do something like the following:
HTML
<div class="control-group">
<label for="name" class="control-label">
<p class="text-info">Saghir<i class="icon-star"></i></p>
</label>
<input type="text" class="edit-input" />
<div class="controls">
<a class="edit" href="#">Edit</a>
</div>
</div>
jQuery
$(document).ready(function() {
$('a.edit').click(function () {
var dad = $(this).parent().parent();
dad.find('label').hide();
dad.find('input[type="text"]').show().focus();
});
$('input[type=text]').focusout(function() {
var dad = $(this).parent();
$(this).hide();
dad.find('label').show();
});
});
CSS
.edit-input {
display:none;
}
Here is a working JSFiddle for your reference.
I think you need jQuery for it. Try this :
$('#edit').click(function() {
var text = $('.text-info').text();
var input = $('<input id="attribute" type="text" value="' + text + '" />')
$('.text-info').text('').append(input);
input.select();
input.blur(function() {
var text = $('#attribute').val();
$('#attribute').parent().text(text);
$('#attribute').remove();
});
});
.control-label .text-info { display:inline-block; }
<label for="name" class="control-label"><p class="text-info">Saghir</p><i class="icon-star"></i></label>
<div class="controls">
<a href="#" id="edit" class="btn">Edit</a>
</div>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
If you want change label to input and text of label put into placeholder of input, try this for
$('#edit').click(function() {
var text = $('.text-info').text();
var input = $('<input type="text" placeholder="' + text + '" />')
$('.text-info').text('').append(input);
});
.control-label .text-info { display:inline-block; }
<label for="name" class="control-label"><p class="text-info">Saghir</p><i class="icon-star"></i></label>
<div class="controls">
<a href="#" id="edit" class="btn">Edit</a>
</div>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
jsfiddle jsfiddle 2
Use a hidden input
<div class="control-group">
<label for="name" class="control-label"><p class="text-info">Saghir<i class="icon-star"></i></p></label>
<input type="text" class="input-medium" style="display:none;">
<div class="controls">
<a href="#" onclick="edit(this);">Edit</a>
</div>
</div>
When user click on "Edit", grab the text from text-info
(eg Saghir), hide the label, show the input and set the inputs placeholder-attribute.
function edit(element) {
var parent=$(element).parent().parent();
var placeholder=$(parent).find('.text-info').text();
//hide label
$(parent).find('label').hide();
//show input, set placeholder
var input=$(parent).find('input[type="text"]');
$(input).show();
$(input).attr('placeholder', placeholder);
}
working fiddle : http://jsfiddle.net/TKW74/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With