关于javascript:redirect knockout js observable如果包含字符串

redirect knockout js observable if containing string

我的HTML中有一个输入字段,它基本上将金额发送到一个可观察的页面,然后根据金额重定向到不同的页面,但是我想确保即使一个不写"字符串值"中的金额和类型的人仍然能够被重定向,但我不确定如何完成这一点。

HTML代码

1
2
<input id="amount"  type="text" data-bind="value : amount" />
<button class="btn button2" type="submit"  data-bind=" valueUpdate:'afterkeydown' , click: $root.borrow_first_pageview"></button>

我不想在HTML中写type=number,因为我想知道它是如何签入JS的。

下面是使用knockout.js的其余代码

1
2
3
4
5
6
7
8
9
10
self.borrow_first_pageview = function () {
        if(self.amount()){
            window.location.href = BASEURL +"index.php/moneyexchange/borrow_first_page/" + self.amount();
        }else if(typeof self.amount() == 'string'){
            window.location.href = BASEURL +"index.php/moneyexchange/borrow_first_page/" + 2500;
        }else {
             window.location.href = BASEURL +"index.php/moneyexchange/borrow_first_page/" + 2500;
        }

    };

是否有方法检查self.amount()是否为字符串,然后重定向用户。需要帮助。


因此,我们可以逆转问题,看看金额是否为数字,然后相应地采取行动:

1
2
3
4
var value = self.amount();
if((+value == value) && !isNaN(+value)){
    //Yey we have a valid number.
}

这可能是我发现的几个松散的相等运算符的有效用法之一(它防止空值和"传入")。它使用了一元加上一点魔力的运算符,这是一个检查值是否是数字的好方法。

如果您愿意,可以将其放入函数中,例如"isNumber":

1
2
3
4
function isNumber(value){
    //loose equality operator used to guard against nulls, undefined and empty string
    return ((+value == value) && !isNaN(+value));
}