У меня есть функция, которая устанавливает фокус на следующее поле через JS в форме при нажатии ввода:
function pressEnter(obj, e) {
var key = e.keyCode ? e.keyCode : e.which;
if (key === 13) {
var total = document.forms[0].elements.length;
for (var i = 0; i < total; i++) {
if (obj.id == document.forms[0].elements[i].id) {
index = i + 1;
while ((document.forms[0].elements[index].type == "hidden" || document.forms[0].elements[index].nodeName == "FIELDSET" || document.forms[0].elements[index].disabled == true)) {
index++;
if (document.forms[0].elements[index] == null)
return;
}
$('#' + document.forms[0].elements[index].id).focus();
break;
}
}
}
}
В теге BODY у меня есть следующий сценарий: onkeypress = "var key = event.keyCode? Event.keyCode: e.which; return (key! = 13);", чтобы избежать публикации при нажатии [Enter]
Работать нормально, если я установил [TextBox1 autoPostBack = false] [TextBox2 autoPostBack = false]. Введите TextBox1, [ввод], TextBox2 получает фокус и запускает событие onkeypress тела.
Хороший.
Вот и проблема
Если я установил [TextBox1 autoPostBack = false] [TextBox2 autoPostBack = true], когда textBox2 получает фокус, он обновляет страницу, выполняет публикацию и не запускает событие onkeypress тела. В TextBox2 ничего не набиралось. Я бы хотел, чтобы TextBox с AutoPostBack = true не создавал публикацию и не обновлял экран, пока не будет введено значение и не будет запущен onBlur.
Подробно, если нажать TAB, такой проблемы не возникает, просто при программной установке фокуса через JS.
Если мне кто-нибудь объяснит почему, буду очень признателен.
Тарсис - Варуа
return false;
в функциюpressEnter
, и, надеюсь, это остановит запуск кода автоматической обратной передачи ASP.NET. - person Shadow Wizard Wearing Mask V2   schedule 04.06.2011