I have been looking on Google and StackOverflow but haven\'t been able to find what I\'m after as of yet. If someone could point me in the right direction that would be grea
Take a look at some of the edit-in-place plugins. For example:
$(document).ready(function(){
$("td").bind('click', function(oTd){
var c = $(oTD).text();
$(oTd).empty();
$(oTd).append('<input type="text" value="' + c + '"/>");
)};
});
One possible way:
$('td:contains("(Notes Text)")').click(
function() {
var text = $(this).text();
$(this).text('');
$('<textarea />').appendTo($(this)).val(text).select().blur(
function() {
var newText = $(this).val();
$(this).parent().text(newText).find('textarea').remove();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<table>
<tbody>
<tr>
<th scope="row" class="table-check-cell">
<input type="checkbox" name="selected[]" id="table-selected-1" value="1" />
</th>
<td>123456</td>
<td>Address 1</td>
<td>10th Feb 2011 (10:43am)</td>
<td>
<ul class="keywords">
<li class="pink-keyword">Awaiting Reply</li>
<li class="purple-keyword">Direct</li>
</ul>
</td>
<td>(Notes Text)</td>
<td>1</td>
<td class="table-actions">
<a href="#" title="View" class="with-tip">
<img src="image/magnifier.png" width="16" height="16" />
</a>
<a href="#" title="Edit" class="with-tip">
<img src="images/pencil.png" width="16" height="16" />
</a>
<a href="#" title="Validate" class="with-tip">
<img src="images/navigation.png" width="16" height="16" />
</a>
<a href="#" title="Close" class="with-tip">
<img src="images/cross-circle.png" width="16" height="16" />
</a>
</td>
</tr>
</tbody>
</table>
While the above works, I'd heartily recommend applying a class to the td
element that you'd like to be able to edit (assuming you want to be able to edit more than one cell).
Failing that: you could just use the contentEditable
attribute in the html:
<table>
<tbody>
<tr>
<th scope="row" class="table-check-cell">
<input type="checkbox" name="selected[]" id="table-selected-1" value="1" />
</th>
<td>123456</td>
<td>Address 1</td>
<td>10th Feb 2011 (10:43am)</td>
<td>
<ul class="keywords">
<li class="pink-keyword">Awaiting Reply</li>
<li class="purple-keyword">Direct</li>
</ul>
</td>
<td contentEditable>(Notes Text)</td>
<td>1</td>
<td class="table-actions">
<a href="#" title="View" class="with-tip">
<img src="image/magnifier.png" width="16" height="16" />
</a>
<a href="#" title="Edit" class="with-tip">
<img src="images/pencil.png" width="16" height="16" />
</a>
<a href="#" title="Validate" class="with-tip">
<img src="images/navigation.png" width="16" height="16" />
</a>
<a href="#" title="Close" class="with-tip">
<img src="images/cross-circle.png" width="16" height="16" />
</a>
</td>
</tr>
</tbody>
</table>
Edited in response to question from OP (in comments):
One tiny (I hope) other question was, is there any way to move it from being a
textarea
to andinput
?
Yep; that's pretty easily accomplished:
$('td:contains("(Notes Text)")').click(
function() {
var text = $(this).text();
$(this).text('');
$('<input type="text" />').appendTo($(this)).val(text).select().blur(
function() {
var newText = $(this).val();
$(this).parent().text(newText), find('input:text').remove();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<table>
<tbody>
<tr>
<th scope="row" class="table-check-cell">
<input type="checkbox" name="selected[]" id="table-selected-1" value="1" />
</th>
<td>123456</td>
<td>Address 1</td>
<td>10th Feb 2011 (10:43am)</td>
<td>
<ul class="keywords">
<li class="pink-keyword">Awaiting Reply</li>
<li class="purple-keyword">Direct</li>
</ul>
</td>
<td>(Notes Text)</td>
<td>1</td>
<td class="table-actions">
<a href="#" title="View" class="with-tip">
<img src="image/magnifier.png" width="16" height="16" />
</a>
<a href="#" title="Edit" class="with-tip">
<img src="images/pencil.png" width="16" height="16" />
</a>
<a href="#" title="Validate" class="with-tip">
<img src="images/navigation.png" width="16" height="16" />
</a>
<a href="#" title="Close" class="with-tip">
<img src="images/cross-circle.png" width="16" height="16" />
</a>
</td>
</tr>
</tbody>
</table>
Note the change from $('<textarea />')
to $('<input type="text" />')
although the type
attribute may not be strictly required (since input
elements default to type="text"
anyway). Also the find('input:text')
.
References: