我查看了一些相关问题,但没有人帮助我弄清楚我的问题.
我有自己的动态数据网格形式从头开始构建,其中可以添加/删除数据行和字段列.我正在尝试提高可用性,以便按Enter键将创建一个新的字段列并将焦点放在它.到目前为止,这是执行此操作的代码:
$('#data_fields').on('keydown','._field',function(e){
if(e.which==13)
{
$('#addfield').click();
var o=$(this).parent().parent();
var l=$(o).children().length-2;
var f=$(o).find("td:eq("+l+")").find("._field");
$(f).focus();
}
});
Run Code Online (Sandbox Code Playgroud)
#addfield 是一个按钮,在单击时添加字段列.
._field 是一个输入框,其中写入了字段的名称.
#data_fields是包含单元格的tr,其中包含._field输入框.
但是,._field新列中的输入框没有特殊的超级元素keydown能力.更重要的是,如果我将('#data_fields')选择器更改为.on()to (document),它甚至不会为当前元素提供keydown回调.
这是HTML,抱歉它有点乱,但我在PHP中使用模板和东西:
<thead id="doc_fields">
<tr id="delrow">
<tr id="data_fields">
<td style="padding:2px"><input class="_field" type="text" onkeyup="sync_doc_table();" onchange="sync_doc_table();" style="width:90%" value="" name="Fields[]"></td>
<td style="padding:2px"><input class="_field" type="text" onkeyup="sync_doc_table();" onchange="sync_doc_table();" style="width:90%" value="b" name="Fields[]"></td>
<td style="padding:2px"><input type="text" style="width:90%" value="" name="Fields[]" onchange="sync_doc_table();"></td>
<td style="padding:2px"><input type="text" style="width:90%" value="" name="Fields[]" onchange="sync_doc_table();"></td>
<td id="addcol" class="midi" style="width:25px" rowspan="3">
<a id="addfield" onclick="inscol('#addcol','<td style=\'padding:2px\'><input onchange=\'sync_doc_table();\' type=\'text\' name=\'Fields[]\' value=\'\' style=\'width:90%\' /></td>');addcol('#typerow','<td><select name=\'Type[]\' style=\'width:91%\'><option value=\'integer\'>integer</option><option value=\'double\'>double</option><option value=\'string\' selected=\'selected\'>string</option></select></td>');addcol('#delrow','<td class=\'center _delly\'><a href=\'#\' onclick=\'del_doc_field($(this).parent());return false;\'><img src=\'/images/icons/x.png\' alt=\'[Del]\' /></a></td>');$('._colsp').attr('colspan', $('#addrow').attr('colspan') + 1);$('<td><input type=\'text\' name=\'Data[][]\' value=\'\' style=\'width:90%\' /></td>').insertBefore('.datarow ._delly');return false;" href="#">
</td>
</tr>
<tr id="typerow">
</thead>
Run Code Online (Sandbox Code Playgroud)