Рейтинг:
2
F-ES Sitecore
Длинный ответ заключается в том, что вы этого не делаете. Кто - то может захотеть разместить свой номер, например
0700 123 456
Возможно, им потребуется добавить код страны
+44(0)700 123 456
Они, возможно, захотите, чтобы добавить расширение
+44(0)700 123 456 x789
Если бы я попытался ввести свой номер на вашем сайте, ваше ограничение остановило бы меня.
Короткий ответ заключается в использовании регулярных выражений
c# - регулярное выражение только для чисел - переполнение стека[^]
Однако я бы посоветовал вам искать регулярное выражение, которое ориентировано на телефонные номера, а не только на цифры.
Рейтинг:
0
khanabrar
Привет, вы можете заблокировать их, чтобы ввести символ в текстовое поле с помощью javascript.
<asp:TextBox runat="server" ID="txt" onkeypress="return checkNumeric(event);" Width="50%" MaxLength="10"></asp:TextBox>
а функция javascript такова
function checkNumeric(e) {//debugger;
//alert(e.keyCode);
if (window.event) // IE
{
if (e.keyCode < 48 || e.keyCode > 57) {
event.returnValue = false;
return false;
}
}
else {
if (e.which < 48 || e.which > 57) {
return false;
}
}
}
Рейтинг:
0
#realJSOP
В зависимости от типа этого номера вы можете использовать xxx.TryParse()
(где "xxx" - это рассматриваемый числовой тип данных).
string x = "1234";
string y = "-1234";
string z = "12b34";
int value;
if (int.TryParse(x, out value))
{
// x is indeed a valid integer, so value will be equal to 1234.
}
if (int.TryParse(y, out value))
{
// y is a valid integer value, so value will be equal to -1234.
}
if (int.TryParse(z, out value))
{
}
else
{
// z is NOT a valid integer.
}
Когда
TryParse()
возвращается,
value
содержит 32-разрядное целочисленное значение со знаком, эквивалентное числу, содержащемуся в исходной строке, если преобразование прошло успешно, или нулю, если преобразование завершилось неудачно. Преобразование завершается неудачно, если параметр исходной строки равен
null
или
String.Empty
, не имеет правильного формата или представляет собой число меньше, чем
int.MinValue
или больше, чем
int.MaxValue
Этот параметр передается неинициализированным; любое значение, первоначально заданное в результате, будет перезаписано.
Все внутренние числовые типы имеют
TryParse()
метод.
F-ES Sitecore
Многие телефонные номера слишком велики, чтобы хранить их как int.
#realJSOP
MVC имеет атрибуты, которые можно использовать, чтобы указать, что поле является номером телефона, и проверка происходит соответствующим образом. Если вы хотите проверить номер телефона с помощью TryParse, используйте double.TryParse или decimal.Метод tryparse. Они достаточно большие, чтобы обрабатывать телефонные номера. Я использовал int.TryParse в качестве примера, а затем заявил, что все внутренние числовые типы имеют метод TryParse. Я прикрыт.
F-ES Sitecore
Я почти уверен, что MVC не имеет проверки телефонных номеров, вы можете думать о входных атрибутах html5, но все, что делается на клиенте, должно быть сделано и на сервере, так как все, что делается на клиенте, можно обойти.
Далее, если ОП последует вашему совету и у него будут слишком большие цифры, неужели вы действительно думаете, что он поймет, что ему нужно использовать более крупный тип? Или он просто вернется и отправит еще один вопрос: "я сохраняю телефонные номера в int, и я получаю арифметическое переполнение?"
Что касается использования double для хранения телефонных номеров, то это еще хуже, чем int, поскольку двойники хранятся как приближения чисел, они не точны и не должны использоваться для хранения вещей, где точность жизненно важна. Вы сохраните номер телефона 123456789, но получите 12345692, когда прочтете его обратно.
Данные всегда должны храниться в соответствующих типах, и чем дальше тип находится от данных, которые вы храните, тем больше проблем это будет представлять. Посмотрите на множество проблем здесь, потому что люди хранят даты в виде строк или списки идентификаторов в виде строки, разделенной запятыми, а затем в конечном итоге они сталкиваются с непреодолимыми проблемами, и это то, что вы получите, если будете хранить телефонные номера в виде любого числового типа данных. Как минимум, я бы рассмотрел хранение телефонного номера в виде строки, но пуристы, вероятно, скажут, что вы должны создать свой собственный класс PhoneNumber для его хранения.