在输入html中breeze绑定到十进制只允许[0-9]

时间:2013-11-17 12:02:52

标签: angularjs breeze

我正在使用breeze 1.4.5和angular 1.2.1 我使用输入类型“text”将breeze实体直接绑定到 decimal 类型的属性

 <input class="form-control" type="text" ng-model="vm.transaction.ListPrice" />

执行此操作时,它只接受此字段中的数字0-9(逗号,小数点和其他字符将被忽略)

另一个绑定到实体的 text 属性的输入正常工作,所以它必须是幕后的东西,我不明白

(我不使用类型“数字”,因为我不喜欢输入字段中向上/向下选择的按钮。)

4 个答案:

答案 0 :(得分:2)

如果问题仍然存在,请尝试使用breeze.directives。 zFloat指令解决了这个问题。

http://www.breezejs.com/breeze-labs/breezedirectivesfloat

答案 1 :(得分:1)

好了,现在有一段时间,微风的家伙想出了一个解决方案(角度的zfloat指令):

http://www.breezejs.com/breeze-labs/breezedirectivesfloat

答案 2 :(得分:0)

使用数字输入类型并使用此css规则隐藏箭头

input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
    /* display: none; <- Crashes Chrome on hover */
    -webkit-appearance: none;
    margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
}  

有关替代方法,请参阅this answer 我认为使用数字输入类型比使用文本更容易和语法更好。

答案 3 :(得分:0)

我使用了notme上面的推荐,但是需要添加一点来保持验证不成问题。

输入的数字类型允许小数点,所以这很好。

来自notme的CSS关闭了微调器,这也有所帮助。

但是,当字段中包含小数时,bootstrap仍会使该字段突出显示为红色。当有小数点时,这一点CSS将使该字段看起来是蓝色的:

input:focus:invalid { color:#333; border-color: rgba(82, 168, 236, 0.8); } 

input:focus:invalid:focus, 
textarea:focus:invalid:focus, 
select:focus:invalid:focus { 
    border-color: rgba(82, 168, 236, 0.8); 
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); 
    -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); 
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); 

}

使用十进制

解决bootstrap验证问题的替代方法

使用step =“any”,如:

<input type="number" step="any" />