问题描述
我在文本框中取消了自定义绑定,以便在文本框中显示逗号和 $ 和 + 符号,但是当我单击“应用”按钮时,输入/更改的文本框值未反映在 IOS/Android 上的程序中。请帮忙。提前致谢。
HTML:
<span class="slider-inputs__label">to</span>
<input type="tel" class="form-control form-control-lg" data-bind="value: Max,formatted: Max,attr: {'id': Name + 'MobileFilterTo'},formatOptions : { format: Format },addplusSign : AddplusSign">
<button type="button" class="btn btn-sm btn-tertiary pull-right z-index: 9999" data-bind="click: $root.RangeSliderSelected.bind($data)">Apply <span data-bind="text:HeaderName"></span></button>
自定义绑定 -->
ko.bindingHandlers.formatted = {
init: function (element,valueAccessor,allBindingsAccessor) {
let options = allBindingsAccessor().formatOptions || {};
let addplusSign = allBindingsAccessor().addplusSign;
var value = ko.utils.unwrapObservable(valueAccessor()),$element = $(element),method = "val";
/* Add comma spearted value */
if (options.format == FormatOptions.Formattednumber || options.format == FormatOptions.Amount) {
$(element).keyup(function (e) {
var key = e.keyCode;
if (key >= 48 && key <= 57) {
let value: string = $(element).val().toString();
if (value.length >= 4) {
value = $(element).val().toString().replace(",","");
$(element).val(numberWithCommas(value))
}
}
else {
e.preventDefault();
}
});
/* Add plus(+) sign */
if (options.format == FormatOptions.Amount) {
if (addplusSign != undefined && addplusSign != "") {
$(element).attr('maxlength','8');
$element[method]("$" + numberWithCommas(value) + addplusSign);
}
else {
$(element).attr('maxlength','8');
$element[method]("$" + numberWithCommas(value));
}
/* Edge case : if user will add first char as number,make it $ + Number */
$(element).keypress(function (e) {
if ($(element).val() != "" && $(element).val().toString().charat(0) != "$") {
$(element).val("$" + $(element).val());
}
});
/* convert 01 to 1,blank value to $0,$00 to $0 and show a user friendly message
for input */
$(element).keyup(function (e) {
if ($(element).val() == "" || $(element).val() == "$00") {
$(element).val("$0");
}
var key = e.keyCode;
if (key >= 48 && key <= 57) {
let value: string = $(element).val().toString();
value = value.replace("$","");
if (value.length == 2 && value.indexOf("0") == 0) {
value = value.substring(1);
$(element).val("$" + value);
}
if (value.length >= 4) {
value = $(this).val().toString().replace(","");
$(this).val(numberWithCommas(value))
}
if (Number(value.replace("$","")) > 100000) {
$(element).val("$0");
$("#ACVFilterMessage span").text("Please enter a value between $0 and
$100,000");
}
else
$("#ACVFilterMessage span").text("");
}
else {
e.preventDefault();
}
});
}
else if (options.format == FormatOptions.Formattednumber) {
$(element).attr('maxlength','7');
$(element).val(numberWithCommas(value))
}
}
if (options.format == FormatOptions.Number) {
$(element).attr('maxlength','4');
$(element).val(value);
}
$(element).keypress(function (e) {
var key = e.keyCode;
if (key >= 48 && key <= 57) {
}
else {
e.preventDefault();
}
});
$(element).on("cut copy paste",function (e) {
e.preventDefault();
});
},update: function (element,allBindingsAccessor) {
let options = allBindingsAccessor().formatOptions || {};
let addplusSign = allBindingsAccessor().addplusSign;
var value = ko.utils.unwrapObservable(valueAccessor()),method = "val";
if (options.format == FormatOptions.Amount) {
$(element).attr('maxlength','8');
if (addplusSign != undefined && addplusSign != "") {
if (numberWithCommas(value) == "100,000" || numberWithCommas(value) == "$100,000") {
if (value.toString().indexOf('$') > -1) {
$element[method](numberWithCommas(value) + addplusSign);
}
else {
$element[method]("$" + numberWithCommas(value) + addplusSign);
}
}
else {
if (value.toString().indexOf('$') > -1) {
$element[method](numberWithCommas(value));
}
else {
$element[method]("$" + numberWithCommas(value));
}
}
}
else {
if (value.toString().indexOf('$') > -1) {
$element[method](numberWithCommas(value));
}
else {
$element[method]("$" + numberWithCommas(value));
}
}
}
else if (options.format == FormatOptions.Formattednumber) {
$(element).val(numberWithCommas(value))
}
else if (options.format == FormatOptions.Number) {
$(element).val(value);
}
}
};
我在文本框中取消了自定义绑定,以便在文本框中显示逗号和 $ 和 + 符号,但是当我单击“应用”按钮时,输入/更改的文本框值未反映在 IOS/Android 上的程序中。请帮忙。提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)