Функции Javascript - PullRequest
       7

Функции Javascript

2 голосов
/ 16 февраля 2011

Итак, у меня есть текстовое поле, в котором можно ввести не более 5 символов.

Пользователь должен ввести время в формате чч: мм или ччмм в текстовое поле.

Предположим, чтопользователь вводит 1: 2: 3 или 1 :: 2 и т. д., затем должно отображаться предупреждающее сообщение («Неверный формат времени»)

Можно ли как-нибудь проверить все другие случаи: ИСКЛЮЧИТЬ для первого:, и предупредить пользователя?

(Это необходимо сделать с помощью функции javascript)

Это то, что я использовал для проверки нецифровых значений (исключая :), введенных в текстовое поле:

    <script type='text/javascript'>

    function getClks(){
    ...
    var re=":";
    var found = clks.match(re);
     if (clks.match(/^[0-9:]/)){
    alert('Invalid time value');
    }

    if (found=:){
    var splitime = clks.split(":");
    var hours = splitime[0];
    var mins = splitime[1];
......
    }
    }
    </script>

Ответы [ 5 ]

2 голосов
/ 16 февраля 2011

Если у вас нет веских причин для изменения ввода пользователя. Я бы рекомендовал только предупреждать пользователя о том, что его ввод не соответствует правильному формату.

Если вы действительно хотите удалить символы, вы можете использовать функцию replace с некоторым регулярным выражением для удаления лишних : символов.

Вы можете использовать search или match, чтобы проверить правильность формата ввода.

Что-то вроде /^\d{1,2}:\d{2}$/ должно работать.

0 голосов
/ 16 февраля 2011

Вы можете сделать что-то вроде этого

разметка

<input id="myinput" maxlength="5" type="text" />
<input type="button" onclick="test()" value="test" id="testbtn" />

js

    var re = new RegExp("^([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}$");
    var myInput = document.getElementById('myinput');
    function test(){
        alert(re.test(myInput.value)); //alerts true if the input is well-formed
    }

пример => http://jsfiddle.net/steweb/rRZLx/

0 голосов
/ 16 февраля 2011

Все остальные объяснили, что делать. Вот более конкретный пример того, как его использовать.

var regex = new RegExp("\\d{2}[:]\\d{2}");

if (regex.test(input)) {
   var array = input.split(":");
   var hours = array[0];
   var minutes = array[1];
} else {
   alert("malformed input");
}
0 голосов
/ 16 февраля 2011

@ плагина jQuery для alexl, вероятно, достаточно, но для полноты картины.

Вне контекста jQuery я бы использовал RegExp , /([0-9][0-9]):([0-9][0-9])/ и протестировал бы числовую строку следующим образом.:

var timestr = /* .. get the text .. */
if(timestr.match(/([0-9][0-9]):([0-9][0-9])/) {
    console.log('Good number string');
} else {
    console.log('Bad number string');
}
0 голосов
/ 16 февраля 2011

попробуйте использовать этот плагин jquery: http://digitalbush.com/projects/masked-input-plugin/ Он замаскирует ваше текстовое поле:

$("#hour").mask("99:99");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...