javascript - 验证更改时的 bootstrap-datepicker 字段

标签 javascript jquery bootstrap-datepicker

我正在尝试在 bootstrap-datepicker 填充 order_datePicker 输入字段时对其进行验证。我已经在 stackoverflow 上找到了一些答案但不知怎的,我自己无法让它发挥作用。对于我正在使用的其他输入字段:

$('#order_emailadres').on('input', function() {

但是,这不适用于日期选择器输入字段,因为用户没有使用输入。

所以,正如 documentation 中提到的和 stackoverflow 链接我试图捕获changeDate事件,以便可以通过以下代码验证输入:

HTML:

<div id=sandbox-container>
  <div id="datepicker"></div>
    <input type="text" id="order_datePicker" name=order_datePicker>
  </div>
</div>

JS:

$('#order_datePicker').on('changeDate', function () {
    var input=$(this);
    var re = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;
    var is_valid=re.test(input.val());
    if(is_valid){input.removeClass("invalid").addClass("valid");}
    else{input.removeClass("valid").addClass("invalid");}
});

遗憾的是,这不起作用。我做错了什么?

更新:

使用下面的代码可以正常工作,但现在该类已添加到 div 而不是输入字段。然而,原来的问题得到了回答。谢谢

$('#datepicker').datepicker().on('changeDate',function(){
    $('#order_datePicker').val($('#datepicker').datepicker('getFormattedDate'));
    var input=$(this);
    var re = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;
    var is_valid=re.test(input.val());
    if(is_valid){input.removeClass("invalid").addClass("valid");}
    else{input.removeClass("valid").addClass("invalid");}
});

最佳答案

$('#order_datePicker').datepicker();
$('#order_datePicker').change(function() {
  alert("date change");
$('#order_datePicker').datepicker();
$('#order_datePicker').change(function() {
 $('#order_datePicker').val($('#datepicker').datepicker('getFormattedDate'));
var input=$(this);
var re = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;
var is_valid=re.test(input.val());
if(is_valid){input.removeClass("invalid").addClass("valid");}
else{input.removeClass("valid").addClass("invalid");}
});

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://code.jquery.com/ui/1.8.21/themes/base/jquery-ui.css" rel="stylesheet"/>
<link href="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.0/css/datepicker3.css" rel="stylesheet"/>
<script src="http://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.0/js/bootstrap-datepicker.js"></script>

<div id=sandbox-container>
  <div id="datepicker"></div>
  <input type="text" id="order_datePicker" name=order_datePicker/>
</div>
</div>

尝试一下, 已更新

  $("#StateDatePicker").on("dp.change", function(e) { alert(); });
or 
$("#StateDatePicker").change( function(e) { alert(); });

请引用https://eonasdan.github.io/bootstrap-datetimepicker/Events/对于事件

关于javascript - 验证更改时的 bootstrap-datepicker 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573772/

相关文章:

javascript - 单击选择器之前,如何在 bootstrap datepicker 中设置从今天起 10 年后的默认日期

javascript - 如何使用 momentjs 在 angularjs 中设置应用程序范围的时区

javascript - 如何在 react Hook 中正确更新状态

javascript - 当我点击按钮时,函数不会被调用

javascript - 如何禁用动态创建的 <li> 元素?

jquery - 限制引导日期选择器选择最多 2 年的日期 - 不起作用

java - Websocket和跨域

javascript - 引用错误 : Headers is not defined in Google scripts

javascript - 如何保证一些内容总是堆叠在主要内容的后面

css - Angular 5 - 引导模式中的引导日期选择器