JavaScript 检查特定字符

javascript check for specific characters

本文关键字:字符 检查 JavaScript      更新时间:2023-09-26

我正在尝试在javascript中创建一个计时器,并且我已经让它工作了,但是我正在尝试暂时验证用户的输入。目前,只要输入框不为空,它就会接受任何内容。但我只想只允许数字,冒号(:)和句点 (.),我看了几个问题,但大多数问题似乎只检查所有文本字符。

这是工作代码:https://jsfiddle.net/hLqayL1w/

.HTML:

<div class="maincont">
  <h2>Please enter a amount of time</h2>
  <p id="timer">0:00</p>
  <div class="container">
    <input id="request" type="text" placeholder="Time"> &nbsp; &nbsp;
    <button type="submit" class="click">Start timer</button>
  </div>
  <P id="cancelbutton" class="cancel">Cancel timer</P>
</div>

.JS:

$(document).ready(function() {
  $('#cancelbutton').hide();
});
$('.click').click(function() {
  var conts = $('#request').val();
  if ($('#request').val() === "") {
    return;
  }
  $('.container').hide();
  $('#cancelbutton').fadeIn('slow');
  var rawAmount = $('#request').val();
  var cleanAmount = rawAmount.split(':');
  var totalAmount = parseInt(cleanAmount[0] | 0) * 60 + parseInt(cleanAmount[1] | 0);
  $('#request').val(" ");
  var loop, theFunction = function() {
    totalAmount--;
    if (totalAmount == 0) {
      clearInterval(loop);
      $('#cancelbutton').hide();
      $('.container').fadeIn('slow');
    }
    var minutes = parseInt(totalAmount / 60);
    var seconds = parseInt(totalAmount % 60);
    if (seconds < 10)
      seconds = "0" + seconds;
    $('#timer').text(minutes + ":" + seconds);
    $('#cancelbutton').click(function() {
      totalAmount = 1
    });
  };
  var loop = setInterval(theFunction, 1000);
})

在您的示例中,您只需检查输入是否为空字符串,让我们更改它,以便我们检查它是否与正则表达式匹配:

if (!$('#request').val().match(/[0-9:.]/gi)) {
    return;    
}

我们让它寻找数字,冒号和点,其他一切都不匹配,返回将运行。

这是一个工作示例。

(这只是一个快速而肮脏的例子,它并没有展示正则表达式应该以这种方式编写,可能有更好的方法来编写它)

这个怎么样?

     $('#request').keyup(function() { 
    var el = $(this),
        val = el.val();
     el.val(val.replace(/[^'d':.]/gi, ""));
 }).blur(function() {
     $(this).keyup();
 });

它将检查输入是否为数字/./:,如果不是,它将实时删除它。

    $(document).ready(function() {
  $('#cancelbutton').hide();
});
     $('#request').keyup(function() { 
        var el = $(this),
            val = el.val();
         el.val(val.replace(/[^'d':.]/gi, ""));
     }).blur(function() {
         $(this).keyup();
     });
$('.click').click(function() {
  var conts = $('#request').val();
  if ($('#request').val() === "") {
    return;
  }
  $('.container').hide();
  $('#cancelbutton').fadeIn('slow');
  var rawAmount = $('#request').val();
  var cleanAmount = rawAmount.split(':');
  var totalAmount = parseInt(cleanAmount[0] | 0) * 60 + parseInt(cleanAmount[1] | 0);
  $('#request').val(" ");
  var loop, theFunction = function() {
    totalAmount--;
    if (totalAmount == 0) {
      clearInterval(loop);
      $('#cancelbutton').hide();
      $('.container').fadeIn('slow');
    }
    var minutes = parseInt(totalAmount / 60);
    var seconds = parseInt(totalAmount % 60);
    if (seconds < 10)
      seconds = "0" + seconds;
    $('#timer').text(minutes + ":" + seconds);
    $('#cancelbutton').click(function() {
      totalAmount = 1
    });
  };
  var loop = setInterval(theFunction, 1000);
})