Следующее довольно общее и должно помочь вам начать. Он может не работать с некоторыми типами входных данных (возможно, вам придется добавить дополнительный код). Переменные многословны, поэтому ясно, что делает каждый шаг.
$(document).ready(() => {
$(".js-submit").on('click', (e) => {
var $this = $(e.currentTarget);
var $form = $this.closest('form');
$form.find("label:not([for='']).required").each((i,e) => {
var $label = $(e);
var idSelector = "#" + $label.prop("for");
if (idSelector.length > 1) {
var $input = $(idSelector);
if ($input.val().length === 0) {
$input.addClass('error');
}
else {
$input.removeClass('error');
}
}
});
});
$("input, textarea, select").on('blur', (e) => {
var $this = $(e.currentTarget);
if ($this.val().length === 0) {
var id = $this.prop('id');
var labelSelector = "label.required[for='" + id + "']";
if ($(labelSelector).length === 1) {
$this.addClass('error');
}
}
else {
$this.removeClass('error');
}
});
});
.error {
outline: 1px solid red;
}
div {
margin: 5px 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<div>
<label for="test" class="required">required</label>
<input type="text" id="test" />
</div>
<div>
<label class="required">required but no for</label>
<input type="text" id="test2" />
</div>
<div>
<label for="test3" class="">not required</label>
<input type="text" id="test3" />
</div>
<div>
<label for="test4" class="required">required</label>
<input type="text" id="test4" />
</div>
<div>
<input type="button" value="Save" class="js-submit" />
</div>
</form>
3.5 расширение если 2.0. Существует № 3.5 без 2,0. На самом деле другой dll (Core.dll). Это не похоже на перемещение от 1,1 до 2,0; если Ваши более старые сайты не ссылаются на новый dll, то те сайты не становятся измененными безотносительно.
2.0 будет играть приятно с 3,5..NET 3.5 является действительно просто некоторыми дополнительными классами, прибавляемыми вершина на 2,0, таким образом, все совместимо. Я переместил набор проектов от 2,0 до 3,5, и все мигрировало очень гладко только с тем, чтобы перекомпилировать.
.Net 3.5, по существу ряд дополнительных блоков, которые работают бок о бок с этими 2,0 библиотеками. Ни одно изменение повреждения не произошло ни с одной из существующих 2,0 библиотек. Можно непосредственно преобразовать все 2,0 приложения к 3,5 без единственной проблемы. Это включает запуск 2,0 приложений в 3,5 платформы. Некоторая оптимизация и исправления ошибок были сделаны к 2,0, но все открытые интерфейсы остаются неизменными. Это относится ко всему пространству имен включая Систему. Сеть.
Было много новых опций, добавленных в 3,0 и 3,5 версиях платформы, таких как WPF, платформа объекта и несколько других "платформ". Классы были добавлены к существующим пространствам имен, но, они на самом деле живут в отдельном dll's.
Одна вещь отметить как FryGuy указывает:
Будьте осторожны относительно установки 3,5 SP1, потому что она также устанавливает 2,0 SP2, который добавляет некоторые дополнительные функции. Это было бы прекрасно, за исключением Visual Studio будет использовать IntelliSense, и все скомпилирует прекрасный и работать отлично на машине разработчика, но полностью перестанет работать с неясной ошибкой на компьютерах со "всего" 2.0.
Примером этого является метод ManualResetEvent. WaitOne. SP1 добавила перегрузку WaitOne (интервал), тогда как без него, необходимо назвать WaitOne (интервал, ложь).
Как CMS, отправленный от 4GuysFromRolla:
(источник: 4guysfromrolla.com)
Да, но с протестом.
Будьте осторожны относительно установки 3,5 SP1, потому что она также устанавливает 2,0 SP2, который добавляет некоторые дополнительные функции. Это было бы прекрасно, за исключением Visual Studio будет использовать IntelliSense, и все скомпилирует прекрасный и работать отлично на машине разработчика, но полностью перестанет работать с неясной ошибкой на компьютерах со "всего" 2.0.
Примером этого является метод ManualResetEvent. WaitOne. SP1 добавила перегрузку WaitOne (интервал), тогда как без него, необходимо назвать WaitOne (интервал, ложь).
Только для добавления версии.NET предназначены для сотрудничества, не только 2.0/3.0/3.5 вещь. Можно также работать 1.1 вдоль стороны, и это будет очень хорошо.
Я сделал это в двух очень больших системах в прошлых годах пары и не имел абсолютно никаких проблем ни в одном случае. 3,5 выполнения сверху 2,0 времен выполнения.
3.0 должен был действительно быть 2.1, и 3.5 должен был быть 2.5. Если это помогает кому-либо. 3.0 и 3.5 действительно просто расширения функциональности 2,0 и не включают их собственное время выполнения. Выпуски пакета обновления к 2,0 состоят в том, где изменения в 2,0 найдены.
Помимо всех ответов, если, и поскольку у Вас должно быть свое задание под угрозой, необходимо попробовать его сначала в тестовом сервере прежде, чем развернуться в рабочем сервере.
По моему опыту, у нас не было проблемы при обновлении до.NET 3.5 на наших веб-серверах.
Нет Вы не можете. Это, вероятно, будет работать, но 3,5 замены определенные 2,0 части, таким образом, Вам нужно к регрессионному тесту.
[редактирование] не проваливает, если Вам не нравится ответ.
Я конкретно задал этот вопрос в TechEd. Хранение того же API не означает, что реализация ведет себя то же. В то время ответ динамика был: повышения производительности (никакие детали).
Для повторения меня, поскольку это, кажется, не регистрируется: API является тем же, реализация отличается (как Вы видите в ссылке Hanselman в комментариях). Micah, Вы, кажется, не знаете, где Вы говорите о.