Javascript keyup shiftKey不是预期的行为
代码示例 下面是具有以下行为的javascript:在输入字段中输入一些值;然后按住ctrlKey并用鼠标单击输入字段下方;上面输入字段中的值复制到下面Javascript keyup shiftKey不是预期的行为,javascript,Javascript,代码示例 下面是具有以下行为的javascript:在输入字段中输入一些值;然后按住ctrlKey并用鼠标单击输入字段下方;上面输入字段中的值复制到下面 $(document).ready(function(){ $("input").on('click', function(e) { var name1 = $(this).closest('tr').prev().find('td:eq('+$(this).closest('td').index()+')').find
$(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');
});
});
然而,若我在输入字段中输入一些值,然后按住Shift键并按下底部箭头按钮,该值将从当前输入字段中消失。我需要该值保留在当前输入字段中,并且在输入字段的正下方显示相同的值
我想这是因为
prev().find
它发现previous是空的。找到当前代码的正确代码是什么?我更改为$(此)。查找但不工作….这是您想要的功能吗
//更新
$(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页面中的示例。您是否尝试过在frefox中使用firebug并查看控制台中的错误?没有尝试过。。。我想没有预期的行为;我的意思是脚本可以工作,但不能做我想要的;需要改变一些东西;不明白什么。请尝试;在JS中使用firebug或任何其他调试器都是一个必须放置的代码,首先在输入字段中键入某物,然后按底部箭头,然后按住shift键,再按底部箭头;但若在第一个输入字段中键入一些内容,然后按住shift键,按下底部箭头,则不会像预期的那个样工作。我建议你们不要太多地使用链。如果你让这像5行函数,它将是。。。可读且易于通过console.log()进行测试;。是的,是这样的,但不完全是这样。用户在输入字段中输入smth,然后按住shift键并按底部箭头键。光标在字段下方移动一个字段,并在字段中从上方粘贴值。就像这里一样,但是当用户从第二个字段移动到第三个字段时,不会复制任何内容。因此,当在第二个字段复制内容时,您也希望光标移动到第二个字段。但您也只希望从第一个输入字段到第二个输入字段使用此功能。不是从2号到3号,对吗?在这里,您是对的,我希望光标移动到第二个字段。而且还想转移到所有其他领域(第三等,如果有更多的领域)。顺便说一下。下面是对多列的修改。若按住SHIFT键并按底部箭头,光标将移动,值将复制到右侧输入字段。但预期的光标会转到正下方的字段,值会复制到正下方的字段。这取决于您在第17行中选择“下一步”的方式。例如,如果您知道每行有3个输入字段,只需执行next=$inputs.eq(i+3);( ). 但这不是一个好的实践,您应该找到更好的方法来标识代码中的行和输入字段。不过你更清楚你需要什么。