我是编码的新手,如果表单上的字段留空,则无法返回值。该字段要求数据输入介于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";
}
}
答案 0 :(得分:0)
一些问题:
您直接使用了该值,而不是元素 - 因此将position.value
设置为新内容将无效。将position
设置为其他内容也不会,因为对象引用会有所不同。
您试图将字符串视为整数,但有时可能会有效,但不适用于此情况
我评论了为使其发挥作用而做出的一些改变。
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)
position
是position.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