没有该代码,它只是一个正常的输入搜索字段,可以触发正常的操作。但是我想知道当我使用向上和向下箭头键更改输入字段的值时,我可以如何停止默认行为。
看看这个:http://jsfiddle.net/3UHVY/7
如果我使用向上和向下键更改框的值,我只希望发生警报,否则不应该触发警报并且表格应该正常提交。但是,如果通过箭头键更改输入值,则应该触发警报并且不应提交表单。
任何想法如何解决?
答案 0 :(得分:1)
function FormHandler() {
var changedByUpDown = false;
this.onKeyDown = function(event) {
if (event.keyCode == 38 || event.keyCode == 40) {
changedByUpDown = true;
}
};
this.onSubmit = function(event) {
if (changedByUpDown) {
alert('Changed by up/down');
return false;
}
return true;
}
}
var fh = new FormHandler();
$('#search_form').submit(fh.onSubmit);
$('#searchsubmit').keydown(fh.onKeyDown);
很少有笔记:
答案 1 :(得分:1)
我不完全确定你想要发生什么,但是下面的jQuery:
$('.s').keydown(
function(e) {
var keyPreesed = e.keyCode;
if (keyPreesed == 38) {
var msg = "Up was pressed.";
$(this).val(msg);
alert(msg);
}
else if (keyPreesed == 40) {
var msg = "Down was pressed.";
$(this).val(msg);
alert(msg);
}
else {
// meither 'up' nor 'down' was pressed, do whatever
// $(this).closest('form').submit(); // <- this (uncommented) will trigger the form's submission.
}
});
问题是我不确定你想要在哪里触发提交,虽然我假设你想要提交,如果既没有 up也没有按下,那么它就在{ {1}}声明)。
答案 2 :(得分:1)
var ok=0;
$(window).keydown(function(e) {
$('.s').focus();
switch ( e.keyCode ) {
case 38: // Up
$('.s').val('Up pressed');
ok=1;
break;
case 40: // Down
$('.s').val('Down pressed');
ok=1;
break;
case 13: // Enter
if(ok)
alert($('.s').val());
break;
default:
ok=0;
break;
}
});