Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除敲除绑定表达式的美元符号_Javascript_Knockout.js - Fatal编程技术网

Javascript 删除敲除绑定表达式的美元符号

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价格=$(

我有一个文本框,它绑定到一个淘汰模型。现在,用户可以在文本框中输入成本,如“0.00”、“4.95”等,但也可以输入美元符号,如:“50.00美元”和“6.00美元”

当用户输入美元符号时,模型会中断,因为它需要一个十进制值。我想知道是否有办法删除下面数据绑定表达式中的美元符号:

<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。