Twitter bootstrap 引导程序编号验证

Twitter bootstrap 引导程序编号验证,twitter-bootstrap,Twitter Bootstrap,我正在进行引导,我在验证方面有问题。我只需要输入正整数。 如何实施 例如: <div> <input type="number" id="replyNumber" data-bind="value:replyNumber" /> </div> 它不是特定于Twitter引导的,它是一个普通的HTML5组件,您可以使用min和max属性指定范围(在您的情况下,仅第一个属性)。例如: 嗯,我总是用同样简单的

我正在进行引导,我在验证方面有问题。我只需要输入正整数。 如何实施

例如:

<div>                       
    <input type="number" id="replyNumber" data-bind="value:replyNumber" />
</div>

它不是特定于Twitter引导的,它是一个普通的HTML5组件,您可以使用
min
max
属性指定范围(在您的情况下,仅第一个属性)。例如:


嗯,我总是用同样简单的方法,而且对我很有效。 在HTML中,将类型保留为文本(如下所示):


在此之后,您只需要在javascript上添加一个方法

<script type="text/javascript">     
function isNumber(evt) {
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if ( (charCode > 31 && charCode < 48) || charCode > 57) {
            return false;
        }
        return true;
    }
</script>

函数isNumber(evt){
evt=(evt)?evt:window.event;
var charCode=(evt.which)?evt.which:evt.keyCode;
if((字符编码>31&&charCode<48)| |字符编码>57){
返回false;
}
返回true;
}
通过这种简单的验证,您将只得到您想要的正数。 您可以修改字符码以向方法添加更多有效键


代码如下:

您应该使用jquery验证,因为如果您使用
type=“number”
则还可以在输入类型中输入“E”字符,这是不正确的

解决方案:

HTML

您可以使用以下模式:

<input class="form-control" minlength="1" pattern="[0-9]*" [(ngModel)]="value" #name="ngModel">

<div *ngIf="name.invalid && (name.dirty || name.touched)" class="text-danger">
  <div *ngIf="name.errors?.pattern">Is not a number</div>
</div>

这不是一个数字

如何实现JavaScript回退?JavaScript回退应该在输入字段中添加一个onChange事件处理程序,并验证数字(先尝试将其解析为整数,然后检查是否大于零)。我仍然可以输入字符。@jned29您使用的浏览器是什么?Firefox确实允许字符输入,但当您这样做时,会将该字段标记为无效。Chrome/Opera不允许字符输入。在IE中,它也应该起作用。Safari仍然存在问题,确实:。这就是为什么我说如果你必须支持不兼容的浏览器,你需要一个适当的回退。复制粘贴失败我正要提到复制粘贴失败的原因。如何防止出现这种情况,同时确保只输入数字?@SuhaibAhmad您可以尝试将其添加到按钮onpaste=“return false;”中,如果这解决了问题,请让我知道如何编辑解决方案。谢谢你advance@fubo您可以尝试将其添加到按钮onpaste=“return false;”中,如果这解决了问题,请让我知道如何编辑解决方案。提前感谢它也会在拖放时失败
<input class="form-control floatNumber" name="energy1_total_power_generated" type="text" required="" > 
//integer value validation
$('input.floatNumber').on('input', function() {
    this.value = this.value.replace(/[^0-9.]/g,'').replace(/(\..*)\./g, '$1');
});
<input class="form-control" minlength="1" pattern="[0-9]*" [(ngModel)]="value" #name="ngModel">

<div *ngIf="name.invalid && (name.dirty || name.touched)" class="text-danger">
  <div *ngIf="name.errors?.pattern">Is not a number</div>
</div>