在一串数字中查找特定值

时间:2016-04-09 16:31:49

标签: javascript

我在尝试验证利率方面遇到了麻烦。条件如下: (必须存在。必须是数字。允许值:3.000到16.000,包括在内。)。

我无法确定在第一个数字后面是否为数字,如果下一个数字也是一个数字。即" 2N34"应该是一个错误。每次我试图使用for循环它只是不起作用。我想知道是否有人可以指出我正确的方向来测试这个并提交正确的错误。

JAVASCRIPT FUNCTION:

function valIntRate(errMessages){

var rate = document.getElementById("intRate").value;
if (rate.length === 0){
    errMessages += "Interest rate can't be left empty";
}


if (rate < 3 || rate > 16){
        errMessages += "Rate must be between 3 and 16 inclusive";
}

return errMessages;
}

HTML(输入字段所在的位置):

  <label class="label"> Interest  Rate </label>

      <input type="text" name="intRate" id="intRate" size="7" maxlength="6" >

3 个答案:

答案 0 :(得分:1)

使用isNaN(输入);验证数值。这应该有用。

function valIntRate(errMessages) {
var rate = document.getElementById("intRate").value;
if (rate.length === 0) {
    errMessages += "Interest rate can't be left empty";
}
if (!(rate >= 3 && rate <= 16)) {
    errMessages += "Rate must be between 3 and 16 inclusive";
}
if (isNaN(rate)) {
    errMessages += "Rate must be  a number";
}
return errMessages;
}

答案 1 :(得分:0)

您可能需要查看regular expressions,它可以根据许多规则匹配字符串。在您的情况下,这样的事情可以验证您的值只是数字:

if (rate.match(/^\d*\.?\d+$/)) {
    // rate only has numbers
} else {
    // rate has other characters
}

修改

如果您不允许为此目的使用正则表达式isNaNtypeof或其他内置函数,并且 明确地循环遍历字符 - by-character(这是一个学校作业,如果你发布自己的尝试首先解决它会很好),然后你可以遍历字符串内容并检查它是数字还是小数。 (您可能还希望确保只存在一个小数。)

这是让你入门的东西:

var index, character;
for (index = 0; index < rate.length; index += 1) {

    character = rate[index];
    // Test to see if character is a digit or decimal here

}

答案 2 :(得分:0)

你可以像这样使用parseFloat

function valIntRate(errMessages) {

  var val = document.getElementById("intRate").value
  var rate = parseFloat(val);
  if (rate.toString() != val) 
  // any letters will be removed so if there is anything not number or dot this will be true
  {
    errMessages += "Must be a number";
  }
  if (rate.length === 0) {
    errMessages += "Interest rate can't be left empty";
  }


  if (rate < 3 || rate > 16) {
    errMessages += "Rate must be between 3 and 16 inclusive";
  }

  return errMessages;
}