javascript检查特定字符

javascript检查特定字符,javascript,jquery,Javascript,Jquery,我正在尝试用javascript创建一个计时器,我已经让它工作了,但是我现在正在尝试验证用户的输入。目前,只要inputbox不为空,它将接受任何内容。但我想只允许数字、冒号(:)和句点(.),我已经看了几个问题,但大多数似乎只是检查所有文本字符 以下是工作代码: 或 HTML: 请输入时间量 0:00 启动计时器 取消计时器 JS: $(文档).ready(函数(){ $(“#取消按钮”).hide(); }); $('.click')。单击(函数(){ var conts=$(“#请求”

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

以下是工作代码:

HTML:


请输入时间量

0:00

启动计时器 取消计时器
JS:

$(文档).ready(函数(){
$(“#取消按钮”).hide();
});
$('.click')。单击(函数(){
var conts=$(“#请求”).val();
如果($('#请求').val()=“”){
返回;
}
$('.container').hide();
$(“#取消按钮”).fadeIn('slow');
var rawamunit=$(“#请求”).val();
var cleanmount=rawamunit.split(“:”);
var totalAmount=parseInt(cleanAmount[0]| 0)*60+parseInt(cleanAmount[1]| 0);
$(“#请求”).val(“”);
变量循环,函数=函数(){
总额--;
如果(总金额==0){
清除间隔(循环);
$(“#取消按钮”).hide();
$('.container').fadeIn('slow');
}
var minutes=parseInt(总金额/60);
var seconds=parseInt(总量%60);
如果(秒<10)
秒=“0”+秒;
$(“#计时器”).text(分钟+”:“+秒);
$(“#取消按钮”)。单击(函数(){
总额=1
});
};
var循环=设置间隔(函数,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();
 });
它将检查输入是否为number/:,如果不是,它将实时删除它

    $(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);
})
$(文档).ready(函数(){
$(“#取消按钮”).hide();
});
$('#请求').keyup(函数(){
var el=$(此),
val=el.val();
el.val(val.replace(/[^\d\:.]/gi,”);
}).blur(函数(){
$(this.keyup();
});
$('.click')。单击(函数(){
var conts=$(“#请求”).val();
如果($('#请求').val()=“”){
返回;
}
$('.container').hide();
$(“#取消按钮”).fadeIn('slow');
var rawamunit=$(“#请求”).val();
var cleanmount=rawamunit.split(“:”);
var totalAmount=parseInt(cleanAmount[0]| 0)*60+parseInt(cleanAmount[1]| 0);
$(“#请求”).val(“”);
变量循环,函数=函数(){
总额--;
如果(总金额==0){
清除间隔(循环);
$(“#取消按钮”).hide();
$('.container').fadeIn('slow');
}
var minutes=parseInt(总金额/60);
var seconds=parseInt(总量%60);
如果(秒<10)
秒=“0”+秒;
$(“#计时器”).text(分钟+”:“+秒);
$(“#取消按钮”)。单击(函数(){
总额=1
});
};
var循环=设置间隔(函数,1000);
})

你读过正则表达式吗?@MikeC没有,但如果他们能帮我解决这个问题,我会读的。他们绝对会的。一旦你算出正则表达式(我建议这不是太难),你就可以用它来找出字符串是否与正则表达式匹配。@MikeC好的,谢谢你的帮助。
     $('#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);
})