Javascript 删除敲除绑定表达式的美元符号
我有一个文本框,它绑定到一个淘汰模型。现在,用户可以在文本框中输入成本,如“0.00”、“4.95”等,但也可以输入美元符号,如:“50.00美元”和“6.00美元” 当用户输入美元符号时,模型会中断,因为它需要一个十进制值。我想知道是否有办法删除下面数据绑定表达式中的美元符号:Javascript 删除敲除绑定表达式的美元符号,javascript,knockout.js,Javascript,Knockout.js,我有一个文本框,它绑定到一个淘汰模型。现在,用户可以在文本框中输入成本,如“0.00”、“4.95”等,但也可以输入美元符号,如:“50.00美元”和“6.00美元” 当用户输入美元符号时,模型会中断,因为它需要一个十进制值。我想知道是否有办法删除下面数据绑定表达式中的美元符号: <input type="text" id="cost" data-bind="value: selectedChoiceValue" /> 尝试转义字符串中的$ 例如: \$5.00 var价格=$(
<input type="text" id="cost" data-bind="value: selectedChoiceValue" />
尝试转义字符串中的$ 例如:
\$5.00
var价格=$(“#成本”).val()。替换(“$”,”)
但是应该注意,数据属性是只读的。这意味着,如果在页面加载后更新数据属性中的值,然后尝试通过$(“#cost”).data(“bind”)检索该值,则不会返回更新后的值
如果必须修改然后检索更新的数据属性,则必须使用.attr(“数据绑定”)也可以使用
var without_dollar_sign = $("#cost").val().replace(/\$/g, '');
$("#cost").val(without_dollar_sign)
将该字段绑定到一个可写的计算机。如果验证成功,将新值写入数值可观测值;如果没有,请执行一些错误处理。计算机的读取组件可以根据需要进行一些格式化或不格式化
函数tonNumber(stringValue){
如果(stringValue[0]='$'){
stringValue=stringValue.substr(1);
}
var result=parseFloat(stringValue);
返回结果;
}
vm={
成本:可观察到的ko(0),
costaString:ko.pureComputed({
对,,
读:函数(){
返回“$”+vm.cost();
},
写入:函数(newValue){
var numberValue=toNumber(newValue);
if(isNaN(数字值)){
警报(“无效号码”);
var revert=vm.cost();
虚拟成本(“”);
虚拟机成本(还原);
}否则{
虚拟成本(数值);
}
}
})
};
ko.应用绑定(vm)代码>
价值是:
老实说,我认为最好的方法是只使用html5数字
输入字段:
<input type="number" id="cost" data-bind="value: selectedChoiceValue" />
$
允许它接受字符串值,但对字符串运行一些验证(删除前导“$”,如果有)以检查它是否为数字?或者对输入字段使用数字类型,但用户是输入美元符号的用户。当他们输入美元符号时,您仍然可以在转义字符前面加上前缀。只要计算他们输入的字符串,如果它包含$,就转义它。他使用的是Knockout,而不是jQuery。