Итак, у меня есть форма, хорошо работающая с MVC 3, DataAnnotations и ненавязчивым JavaScript.Однако я хочу поместить «водяной знак» в мои поля ввода, чтобы, например, текстовое поле «Имя» заполнялось значением «Имя» по умолчанию.Когда пользователь нажимает на него, значение исчезает, и если они покидают поле, ничего не вводя, снова появляется «Имя».Кроме того, у меня это реализовано и работает хорошо.
Мой вопрос связан с атрибутом [Required]
свойства FirstName моей модели представления.Если пользователь отправляет форму, по умолчанию это поле содержит «Имя», поэтому оно проходит проверку «Обязательно».
Какой лучший способ справиться с этим ... Я думаю онесколько вариантов:
1) Внедрить некоторые jQuery до запуска ненавязчивой проверки JS, которая удаляет водяные знаки, чтобы при запуске проверки поля, в которых были заданы значения по умолчанию, были пустыми.Я не уверен, что это возможно.Можете ли вы как-то внедрить функцию до того, как ненавязчивый JS выполнит ее проверку?
2) Измените атрибут [Required] или создайте новый, чтобы принять значение по умолчанию, а затем сравните его, чтобы увидеть, совпадают ли они.В связи с этим возникает несколько проблем: у меня теперь есть значение по умолчанию, указанное в нескольких местах, одно в пользовательском интерфейсе, другое в коде, и это неправильно.
3) Создайте новый атрибут «Водяной знак», который я украшаюсвойство с этим указывает значение по умолчанию для этого поля.Создайте новый помощник HTML (вместо TextBoxFor), который ищет этот атрибут и выдает соответствующие атрибуты тегу.Измените или создайте новый атрибут [Обязательный], который ищет наличие [Водяной знак] в том же поле.Это сохраняет «значение по умолчанию» в одном месте и соответствует принципам СУХОГО, но мне кажется, что я помещаю элементы пользовательского интерфейса в код (водяные знаки являются чисто визуальными), и это также кажется слишком сложным решением для простой задачи..
Есть мысли?