Ошибка автозаполнения в Safari без учета максимальной длины - PullRequest
1 голос
/ 12 сентября 2011

У меня есть адрес пользователя, который инкапсулирует адрес. Имеет обычные поля адреса, которые вы ожидаете. Я получаю ошибки, когда пользователи с Safari приходят на сайт, потому что автозаполнение Safari кажется полностью и совершенно неработающим.

Это пример (почти) фактических данных публикации на сервере:

VictimAddressPanel $ Адрес $ CityNameItem $ txtCityName Улица Фейка 123

VictimAddressPanel $ Адрес $ ZipCodeItem $ txtZipCode Улица Фейка 123

Похоже, что из-за того, что во внешнем контейнере есть слово "Адрес", Safari идет ОН !!!! ОЙ!!! Это адрес улицы. Таким образом, он заполняет уличный адрес пользователя в КАЖДОМ поле адреса, включая почтовый индекс. Теперь я также указал атрибут текстового поля ASP.NET для AutoComplete и установил для него значение «Отключено», которое должно сообщать браузеру, эй, фиктивная, даже не пытайтесь заполнить это поле. Safari игнорирует это. И наконец, чтобы ДЕЙСТВИТЕЛЬНО добавить оскорбление к травме, Safari также игнорирует свойство maxlength текстовых полей. Даже если вы скажете, что поле имеет максимальную длину 2, если в вашей информации автозаполнения содержится 100 символов, Safari с радостью заполнит поле 100 символами. Как вы можете себе представить, это вызывает исключение базы данных, потому что длина поля слишком велика. Кто-нибудь видел это раньше? Есть ли обходной путь?

1 Ответ

0 голосов
/ 12 сентября 2011

Это неприятная проблема. Может быть проще всего просто изменить имя, чтобы избавиться от части $Address, чтобы предотвратить это. В противном случае у вас есть несколько вариантов.

Вариант первый - валидация Вы можете поставить в валидацию ограничение. Например

<asp:TextBox ID="Zip" runat="server" MaxLength="5"></asp:TextBox>

<asp:RegularExpressionValidator ID="ZipVerify" runat="server"
  ControlToValidate="Zip"
  ErrorMessage="You may only have five characters in the zipcode."
  ValidationExpression="(\s|){0,5}$">
</asp:RegularExpressionValidator>

Второй вариант - на стороне клиента Вы также можете добавить в JavaScript проверку, которая запускается при отправке, чтобы остановить вещи. JQuery ниже

$(document).ready(function () {
    $('form').submit(function () {
        // Verify your fields here
        if ($("Zip").length > 5) {
            //Do something here on error.
        }
    });    
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...