if (standardFlag == "ASCE")
{
if (document.querySelectorAll('#Ss_param, #S1_param, #T0_param, #TL_param').value == "" ){
alert("Please fill out all the required fields before generating your design spectrum");
}
else if (document.getElementById('Ss_param').value < document.getElementById('S1_param').value {
alert("S1 must be less than Ss!");
}
我正在尝试检查Ss_param,S1_param,T0_param或TL_param输入id是否包含任何值。第二个条件通过它自己的情况,这就是我如何知道整个条件没有错误,但第一个条件没有通过它应该。我该如何纠正这个问题?
答案 0 :(得分:2)
首先:您应该查看验证库。
如果您仍希望以这种方式处理它,我会研究jQuery的filter
方法。
这将仅返回具有值的元素:
var $elementsWithValue = $('#Ss_param, #S1_param, #T0_param, #TL_param').filter(function(){
return this.value.length > 0
});
然后你可以检查$ elementsWithValue length。
答案 1 :(得分:1)
重新格式化代码后更具可读性,看起来你错过了一个结束括号}
,这是这个问题中的拼写错误,还是代码中的错误?
此外,您的第二个条件是缺少右括号)
。当您在正在测试的浏览器中打开控制台时,您是否注意到了javascript错误?
解决该问题后,您需要注意使用本机浏览器功能。当您使用querySelectorAll
时,您将获得一系列对象。在它们上调用.value
可能也会导致javascript错误。您需要循环遍历每个值,或使用jQuery(这可以为您提供更易于维护的解决方案)。
使用jQuery,这将为您提供所需的结果:
if (standardFlag == "ASCE")
{
var error = false;
$.each(["Ss_param", "S1_param", "T0_param", "TL_param"], function(){
if ($("#" + this).val() == ""){
error = true;
alert("Please fill out all the required fields before generating your design spectrum");
}
})
if(!error && $("Ss_param").val() < $("#S1_param").val())
alert("S1 must be less than Ss!");
}
}
答案 2 :(得分:1)
如果您的ID始终以_param
if ($('[id$="_param"]').filter(function(){
return $(this).val() === "";
}).length > 0){
alert("Please fill out all the required fields before generating your design spectrum");
}
答案 3 :(得分:1)
您无法从多个元素中获取一个值。只需一次比较一个:
if (document.getElementById('Ss_param').value === ""
|| document.getElementById('S1_param').value === ""
|| document.getElementById('T0_param').value === ""
|| document.getElementById('TL_param').value === "" ){
(并检查您的JavaScript控制台是否存在语法错误。您的else if
测试缺少右括号。)