嘿家伙, 我有一个表单,可以用上下键来进行影响。jquery:防止表单提交
没有这个代码它只是一个正常的输入搜索字段,触发一个正常的行为。但是我想知道当我使用向上和向下箭头键更改输入字段的值时,如何停止默认行为。
看看这个:http://jsfiddle.net/3UHVY/7
我只是想,如果我改变与上下键框的值发生警报,否则警报不应该被解雇和形式应该可以正常提交。但是,如果通过箭头键更改了输入值,则应该触发警报,并且不应提交表单。
任何想法如何解决?
嘿家伙, 我有一个表单,可以用上下键来进行影响。jquery:防止表单提交
没有这个代码它只是一个正常的输入搜索字段,触发一个正常的行为。但是我想知道当我使用向上和向下箭头键更改输入字段的值时,如何停止默认行为。
看看这个:http://jsfiddle.net/3UHVY/7
我只是想,如果我改变与上下键框的值发生警报,否则警报不应该被解雇和形式应该可以正常提交。但是,如果通过箭头键更改了输入值,则应该触发警报,并且不应提交表单。
任何想法如何解决?
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;
}
});
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);
几点注意事项:
我不能完全确定要发生的事情,但下面的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或down是pres sed,因此它在else
声明中)。
我正在正好在寻找这样一个解决方案,但是你不能为我工作。如果使用向上或向下键更改文本,警报就会被触发,但表格也会被提交。如果警报被解雇,我不希望表单提交! – matt
我很笨!返回false就是这样!谢谢,谢谢 – matt