代码示例http://jsfiddle.net/rigaconnect/3Mcxv/6/
以下是具有以下行为的javascript:在输入字段中我输入一些值;然后按住ctrlKey并在输入字段下方单击鼠标;来自上方输入字段的值复制如下。
$(document).ready(function(){
$("input").on('click', function(e) {
var name1 = $(this).closest('tr').prev().find('td:eq('+$(this).closest('td').index()+')').find('input').val();
if(e.ctrlKey) $(this).val(name1).trigger('change');
});
});
以我想要的相同方式:如果我按住shiftKey并按下向下箭头按钮,则当前输入字段中的值将显示在下面的输入字段中。 这是我试过的代码:
$(document).ready(function(){
$("input").keyup(function(e) {
var name1 = $(this).closest('tr').prev().find('td:eq('+$(this).closest('td').index()+')').find('input').val();
if(e.shiftKey) $(this).val(name1).trigger('change');
});
});
但是,如果我在输入字段中输入一些值,然后按住shiftKey并按下向下箭头按钮,则值将从当前输入字段中消失。我需要将该值保留在当前输入字段中,并且在下面的输入字段中另外显示相同的值。
我想这是因为prev().find
它发现以前是空白的。找到当前的代码是什么?我改为$(this).find
但没有工作......
答案 0 :(得分:1)
这类似于你想要的功能吗?
http://jsfiddle.net/xQxGa/11/ //已更新
$(document).ready(function () {
var isShiftPressed = false,
shiftCode = 16, // shift key code
downArrowCode = 40, // down arrow key code
$table = $('table'),
$inputs = $('input',$table);
$table
.delegate('input', 'keydown', function(e) {
if(e.which===shiftCode){
// shift was pressed
isShiftPressed = true;
} else if(isShiftPressed && e.which===downArrowCode){
// shift and down arrow were pressed
var newVal = this.value,
i = $inputs.index(this),
next = $inputs.eq(i+1);
if(next){
// move value and focus to the next
next.val(newVal)
.focus();
}
}
})
.delegate('input', 'keyup', function(e) {
// no key pressed anymore
isShiftPressed = false;
});
});
尝试在jQuery页面中查看示例。