Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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 使用通过(“输入”)传入的百分比时出现问题。val()_Javascript_Jquery - Fatal编程技术网

Javascript 使用通过(“输入”)传入的百分比时出现问题。val()

Javascript 使用通过(“输入”)传入的百分比时出现问题。val(),javascript,jquery,Javascript,Jquery,老实说,我想我只需要将值转换成整数,但我已经尝试了很多方法,不断得到“NaN”或类似“不能在对象上使用此操作”的内容。我想做一些事情,比如使用replace删除%或者简单地对其应用数学。我尝试了String和parseInt()转换,但只得到了NaN 这个例子给了我一个警告框,上面写着“10%”或“20%”,无论用户在其中键入什么 thisInvoiceDiscount = $("#clientSearchInvoiceDiscountTextbox").val(); percentPrese

老实说,我想我只需要将值转换成整数,但我已经尝试了很多方法,不断得到“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);
}
这将从字符串中删除所有非数字字符

var integerValue =  parseInt(numberOnly, 10);
这将把字符串解析为整数

当然,您可以使
regex
针对
%
符号更加具体:

var numberOnly = 
        $("#clientSearchInvoiceDiscountTextbox").val().replace(/%/, '');
或者,仅当它是字符串中的最后一个字符时,使用此
regex
删除
%

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


请注意,当与
索引进行比较时,与整数进行比较比与字符串进行比较更好。如果与
=
进行比较,它会给代码增加一个(非常小的…)提升,并且代码不会停止

这将从字符串中删除所有非数字字符

var integerValue =  parseInt(numberOnly, 10);
这将把字符串解析为整数

当然,您可以使
regex
针对
%
符号更加具体:

var numberOnly = 
        $("#clientSearchInvoiceDiscountTextbox").val().replace(/%/, '');
或者,仅当它是字符串中的最后一个字符时,使用此
regex
删除
%

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



请注意,,与
索引进行比较时,最好与整数进行比较,而不是与字符串进行比较。如果百分比不是整数,它会给代码增加一个(非常小的…)提升,并且如果与
====

parseFloat()
进行比较,代码不会停止。未捕获类型错误:Object[Object Object Object]没有方法'indexOf'@epascarello。你说得对,他在问题中写了
integer
。无论如何,你的评论将保留。。。thanksor
parseFloat()
如果百分比不是整数。未捕获类型错误:对象[Object Object]没有方法'indexOf'@epascarello。你说得对,他在问题中写了
integer
。无论如何,你的评论将保留。。。感谢您在声明变量时应该使用
var
。但有时我需要全局使用它们,在这个函数之外,您混合了这两个代码,请替换它。我的代码应该会处理所有问题,它将删除
%
后缀,您不需要检查它的索引。@gdoron啊,但我需要检查%,因为用户可以输入美元金额或%…我需要检测它是哪一个…我只是删除了额外的代码,因为它不相关,但if(percentPresent=“-1”)中有一些内容{},例如example@gdoron是的,但是在我删除“%”符号之前,我仍然需要检测它是a%还是数字。当你声明变量时,你应该使用
var
。但有时我需要全局使用它们,在这个函数之外,如果你混合了这两个代码,请替换它。我的代码应该会处理所有问题,它将删除
%
后缀,您不需要检查它的索引。@gdoron啊,但我需要检查%,因为用户可以输入美元金额或%…我需要检测它是哪一个…我只是删除了额外的代码,因为它不相关,但if(percentPresent=“-1”)中有一些内容{},例如example@gdoron是的,但在删除“%”符号之前,我仍然需要检测它是%还是数字