我对javascript很新,看着在ID的末尾检查一些带有动态ID的字段,看看他们是否在所有字段中都输入了值,或者根本没有输入任何值。不应允许用户仅在其中一些中输入值并将其他人留空。
我写了下面的内容,但是我觉得必须有更好的方法吗?
var x = document.querySelectorAll('[id^="entryField"]');
for (var i = 0; i < x.length; ++i) {
if (x[i].value == "") {
for (var i = 0; i < x.length; ++i) {
if (x[i].value != "") {
alert("Please enter a value");
}
}
}
}
答案 0 :(得分:1)
一个循环应该与空(或填充)字段的计数器一起使用。如果计数器不为零且没有对象的长度,则某些字段具有值。
// Import Jenkins
import jenkins.model.Jenkins;
// Get Jenkins instance
def j = Jenkins.getInstance();
// Get the job we wan't to trigger
def job = j.getItem("B");
// Finally we schedule a new build which starts directly (the zero in the argument)
job.scheduleBuild2(0)
答案 1 :(得分:1)
这将是一个更简单的版本:
var x = document.querySelectorAll('[id^="entryField"]');
const inputs = Array.from(x);
const allInput = inputs.every(input => {
return (input.value != "");
});
const allEmpty = inputs.every(input => {
return (input.value == "");
});
if (allInput || allEmpty) {
alert('xxxxxx');
}
ES5实施:
var x = document.querySelectorAll('[id^="entryField"]');
var inputs = Array.from(x);
var allInput = inputs.every(function(input) {
return (input.value != "");
});
var allEmpty = inputs.every(function(input) {
return (input.value == "");
});
if (allInput || allEmpty) {
alert('xxxxxx');
}
编辑:支持allInput或allEmpty。一开始就被忽视了。
答案 2 :(得分:0)
你可以检查两个every
个调用,如果所有元素都被填充或没有填充任何元素,则下面的结果为真 - 其他每个情况都是假的:
var x = document.querySelectorAll('[id^="entryField"]');
var allowed = function allOrNone(elements) {
return Array.prototype.every.call(x, function(v) {
return v.value && v.value != "";
}) || Array.prototype.every.call(x, function(v) {
return !v.value || v.value == "";
});
}
console.log(allowed(x));
<input id="entryFieldFoo">
<input id="entryFieldBar">