嘿傢伙, 我有一個表單,可以用上下鍵來進行影響。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