使用传入的百分比时遇到问题(“输入”)。val()

时间:2012-05-24 00:05:37

标签: javascript jquery

说实话,我认为我只需要将值转换为整数,但我已经尝试了很多东西并继续获得'NaN'或类似'不能在对象上使用此操作'的内容。我想做的事情就像使用replace来删除%或简单地应用数学。我已经尝试过String和parseInt()来尝试转换但只是获得NaN。

此示例为我提供了一个警告框,显示“10%”或“20%”...无论用户输入什么类型

thisInvoiceDiscount = $("#clientSearchInvoiceDiscountTextbox").val(); 
percentPresent = thisInvoiceDiscount.indexOf("%"); 
if (percentPresent == "-1") { 
} 
else { 
  alert (thisInvoiceDiscount);
  //I can't seem to do anything with thisInvoiceDiscount here
}

更新:使用第一个回复:

thisInvoiceDiscount = $("#clientSearchInvoiceDiscountTextbox").val();
var numberOnly = $("#clientSearchInvoiceDiscountTextbox").val().replace(/\D/g, '');
percentPresent = thisInvoiceDiscount.indexOf("%");
if (percentPresent == "-1") {
}
else {
    var integerValue =  parseInt(numberOnly, 10);
    alert (integerValue);
}

1 个答案:

答案 0 :(得分:3)

var numberOnly = 
        $("#clientSearchInvoiceDiscountTextbox").val().replace(/\D/g, '');

这将从字符串中删除每个非数字字符。

var integerValue =  parseInt(numberOnly, 10);

这会将字符串解析为整数。

当然,您可以regex更具体地定位%标志:

var numberOnly = 
        $("#clientSearchInvoiceDiscountTextbox").val().replace(/%/, '');

或者regex只有当%成为字符串中的最后一个字符时才会删除var numberOnly = $("#clientSearchInvoiceDiscountTextbox").val().replace(/%$/, '');

indexOf

Live DEMO (基于更新)


注意,在与===结果进行比较时,你最好比一个int数字而不是一个字符串,它会为你的代码添加一个(非常小的......)提升如果您与{{1}}

进行比较,代码将不会制动