Лучший заголовок был бы, "Почему не там никакой RAII в C#/VB". C++ / CLI (Эволюция прерывания, которое было Управляемым С++) имеет RAII в том же самом смысле как C++. Это - все просто сахар синтаксиса для того же шаблона завершения, что остальная часть использования языков CLI (Деструкторы в управляемых объектах для C++ / CLI являются эффективно финализаторами), но это там.
Вам могло бы понравиться http://blogs.msdn.com/hsutter/archive/2004/07/31/203137.aspx
Я нашел подходящее решение и хотел бы поделиться им с u, ребята.
Вместо использования ]
.
Это будет делать то же самое в других браузерах (IE6-7, FF3) И работает в IE8. :)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style type="text/css">
#test {
display: none;
}
</style>
<script type="text/javascript">
onload = function() {
document.getElementById('test').style.display = 'block';
};
</script>
</head>
<body>
<form id="test" method="get" action="javascript:alert('woei!')">
<input type="text" name="user" value="" />
<input type="password" name="pw" value="" />
<button type="submit" value="submit" id="submit"></button>
</form>
</body>
</html>
Я пробовал это в IE8, и у меня это работает. Вы должны убедиться, что часть формы имеет фокус.
Javascript имеет функцию фокусировки, которую вы можете использовать для установки фокуса, если вам это нужно.
var textbox = document.getElementById("whatever name input box's id will be");
if(textbox) textbox.focus();
Я не могу сказать, действительно ли это ошибка, но я могу подтвердить, что поведение, о котором вы сообщаете, изменилось в IE 8 ... и Я полагаю, что это, вероятно, ошибка, а не преднамеренное изменение.
Если форма настроена с использованием CSS display: none, поведение кнопки отправки по умолчанию не работает.
Другие браузеры, включая IE 7 (или даже IE 8, использующие стандартный режим совместимости IE 7), не имеют проблем.
I ' Я сам решил проблему, просто используя height: 0px; в CSS, а затем с помощью javascript установить соответствующую высоту, когда я хочу показать форму. Вместо этого при использовании высоты стандартное поведение клавиши ввода по умолчанию работает нормально.
Вы можете добавить событие onkeyup в свои поля ввода, чтобы, если вы нажмете клавишу ввода в поле ввода, оно также отправилось.
Как упоминалось в CodePartizan, вам нужен фокус в противном случае на кнопке, поэтому, если вы перейдете к кнопке или нажмете на нее, мне кажется, что это тоже сработает.
Я думаю, что все намного сложнее, чем вы думаете ...
когда значение отображения формы не установлено с помощью css class или просто с атрибутом стиля на начальной странице, нажатие клавиши ввода в текстовом поле не работает, только если у вас более одного поля ввода с текстовым типом ... если у вас есть одно текстовое поле, оно работает нормально ... если вы есть более одного, это не вызывает отправку формы ...
Здесь я сделал демонстрацию ...
Работает нормально (нормальная форма) http://yasinergul.com/stackoverflow/ie8-enter-key-bug/one.html
Работает нормально (форма скрыта и снова видна, но с одним вводом текста) http://yasinergul.com/stackoverflow/ie8-enter-key-bug/two.html
Не работает (форма скрыта и снова видна, но с двумя вводом текста) http://yasinergul.com/stackoverflow/ie8-enter-key-bug/three.html
i думаю, что лучший подход - предоставить объекту класс .hidden, но не устанавливать display: none для этого селектора css. вы можете сделать его скрытым с помощью jquery, например
$(".hidden").hide();
, когда страница загружается, форма отображается в течение нескольких миллисекунд, но становится скрытой после того, как jquery работает ...
Я думаю, Ясин понял суть дела. У меня была та же проблема: несколько текстов поля внутри формы, видимость которых "скрыта". Мой обходной путь (чтобы форма не мигал) - установить непрозрачность формы на 0 в CSS, а затем настроить параметры ее стиля с помощью jQuery в готовом документе.
Я считаю, что это не то, что можно исправить с помощью JS.