验证参数

时间:2011-10-02 22:54:47

标签: c# asp.net html

在脚本标签下我需要在输入负数时包含“值必须为非负”的代码。我已经包含了“价值必须是数字”的代码。

<script type="text/javascript">
  function test_ifinteger(testcontrol, nameoffield) {
      var x = 0;
      var isok = true;
      var teststring = testcontrol.value;
      if (teststring.length == 0)
          return true;
      else {
          while (x < teststring.length) {
              if (teststring.charAt(x) < '0' || teststring.charAt(x) > '9')
                  isok = false;
              x++;
          }  //end while
          if (!isok) {
              alert(nameoffield + " must be a number!");
              testcontrol.focus();
          } //end else if(ok)
          return isok;

      }//end else if (teststring.length==0)
  } //end function

 </script>

2 个答案:

答案 0 :(得分:0)

您可以检查字符串的第一个字符,如果是负数,则为“ - ”。

使用此:

  var negative = "-1234";

  if (negative[0] == '-')
      MessageBox.Show("Negative Number");

或添加到您的代码中:

while (x < teststring.length) {
          if (x == 0 && teststring.charAt(x) == '-')
              MessageBox.Show("Negative Number - Do what you want");
          if (teststring.charAt(x) < '0' || teststring.charAt(x) > '9')
              isok = false;
          x++;

此外,如果它是负数或不是数字,请考虑打破循环以避免不必要的循环迭代。 使用“break”命令。

 if (x == 0 && teststring.charAt(x) == '-')
 {
    MessageBox.Show("Negative Number - Stopping loop");
    break;
 }

答案 1 :(得分:0)

尝试,

<script type="text/javascript">
 function isNumber(n) {
   return !isNaN(parseFloat(n)) && isFinite(n);
 }
function test_ifinteger(testcontrol, nameoffield) {

      var teststring = testcontrol.value;
      if(isNumber(teststring)) {
         var no=parseFloat(teststring); // or use parseInt
         if(no<0) {
           //negative
         }
      }
      else {
         //not a number
      }
 } 
 </script>