我有一个非常简单的表结构
<table width='50%' align='center' id='tabs'>
<tr>
<td>1.00</td>
<td>5.23</td>
<td>6.12</td>
</tr>
<tr>
<td>2</td>
<td>2.45</td>
<td>2.45</td>
</tr>
<tr>
<td>3.12</td>
<td>2.98</td>
<td>2.09</td>
</tr>
</table>
这里是我的代码,它只允许在textinput中输入数字,后面有两个地方,即它只允许数字,例如2.12,问题是如果我点击表格单元格,文本框出现在该单元格中,我可以编辑数字但当我点击表格单元格时,它应该专注于文本框,并在编辑数字后,当我从编辑中开始模糊事件应该有效。
$("table td").click( function(e){
if($(this).find('input').length){
return ;
}
var input = $("<input type='text' size='5' />").val( $(this).text() );
$(this).empty().append(input);
$(this).find('input')
.focus(function(e){
if($(this).val()=='0.00' || $(this).val()=='0'){$(this).val('');}
}).keydown(function(event){
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 190 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else {
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
} }
}).blur( function( e ){
if($(this).val()!=""){
if (!isNaN(parseFloat($(this).val()))) {
var val1=parseFloat($(this).val()).toFixed(2);
$(this).val(val1);
$(this).parent('td').text(
$(this).val()
);
}
}
else{
$(this).parent('td').text("0.00");
}
});
});
$(function() {
$('table tr td').hover(function() {
$(this).css('background-color', '#FFFFB0');
},
function() {
$(this).css('background-color', '#F4F4F4');
});
});
答案 0 :(得分:3)
当您点击某个字段时,这将使其聚焦:
var input = $("<input type='text' size='5' />").val( $(this).text() );
$(this).empty().append(input);
input.focus();
这是你更新的JsFiddle: