Javascript - 如果字段留空,则返回值

时间:2016-12-19 16:37:34

标签: javascript forms validation

我是编码的新手,如果表单上的字段留空,则无法返回值。该字段要求数据输入介于1和10000之间,如果该字段留空,则我希望-1为值。这是我的尝试无效......

function validatePosition() {
  var position = document.getElementById('Position').value;
  var positionConditions = /^[0-9]+$/;
  if (position.match(positionConditions) && (position <= 10000 && position >= 1)) {
    return "";
  } else if (position.value.length == 0) {
    position.value = -1;
  } else {
    return "Error";
  }
}

3 个答案:

答案 0 :(得分:0)

一些问题:

  1. 您直接使用了该值,而不是元素 - 因此将position.value设置为新内容将无效。将position设置为其他内容也不会,因为对象引用会有所不同。

  2. 您试图将字符串视为整数,但有时可能会有效,但不适用于此情况

  3. 我评论了为使其发挥作用而做出的一些改变。

    function validatePosition() {
      // take the whole element, so you could modify contents later.
      // you should only take the value directly if you don't modify it, and
      // only use it for reading purposes
      var position = document.getElementById('Position'); 
      var positionConditions = /^[0-9]+$/;
      console.debug(position.value);
      
      // parse the value into int here, to get a comparable integer and not string. i also
      // modified position to position.value to reflect the earlier comment
      if (position.value.match(positionConditions) && (parseInt(position.value) <= 10000 && parseInt(position.value) >= 1)) {
        console.debug('no error');
        return "";
      } else if (position.value.length == 0) {
        // setting to int works here, but it will be auto converted to string - 
        // might as well keep it consistent
        position.value = "-1";
        console.debug('empty input');
      } else {
        console.debug('out of range');
        return "Error";
      }
    }
    <input type="text" id="Position" onkeyup="validatePosition()" />

答案 1 :(得分:0)

positionposition.value不正确的值:

function validatePosition() {
  var posElement = document.getElementById('Position'),
    posVal = posElement.value,
    positionConditions = /^[0-9]+$/;

  if (posVal.match(positionConditions) && (posVal <= 10000 && posVal >= 1)) {
    return "";
  } else {
    posElement.value = -1;
    return "Error";
  }
}
<input type="TEXT" name="Position" id="Position">
<input type="submit" onclick="console.log(validatePosition())">

也不确定为什么你需要else if - 如果长度为0或者它击中了其他的话,它们肯定都是错误

答案 2 :(得分:0)

可能需要更多信息;就像你使用HTML5编码一样。 所以我假设你正在谈论我将做的文本字段如下。 另外,你说“该字段要求数据输入介于1和10000之间,如果字段留空,我想要-1作为值。”我假设你想要设置元素到-1而不是返回-1的函数。我提供了两种选择。

function validatePosition() {
    var position = document.getElementById('Position').value;
    if ((isNaN(position) || position >= 1 || position <= 10000)) {
        return value;
    } else if( position == "" ){
        docucment.getElementById('Position').value = -1;
        // return -1; /** if you want to return the -1 */
    } else {
        return "Error";
    }
}

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN