0

老实说,我认为我只需要将值转换为整数,但我已经尝试了很多事情并不断得到“NaN”或类似于“不能在对象上使用此操作”的内容。我想做一些事情,比如使用替换来删除 % 或简单地对其应用数学。我试过 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);
}
4

1 回答 1

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(/%$/, '');

现场演示 (基于更新)


请注意,与结果进行比较时,您最好将其与 int 数字进行比较,而不是字符串indexOf,它会为您的代码添加(非常小的...)提升,并且如果您与===

于 2012-05-24T00:08:36.723 回答