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输入I是否包含任何值。第二个条件传递了它自己的case,这就是为什么我知道整个条件是没有问题的,但是第一个条件没有在它应该通过的时候通过。我该如何纠正这个问题呢?
发布于 2013-05-29 03:55:17
首先也是最重要的:您应该只查看验证库。
如果您仍然希望这样做,我可以研究一下jQuery的filter方法。
这将只返回具有值的元素:
var $elementsWithValue = $('#Ss_param, #S1_param, #T0_param, #TL_param').filter(function(){
return this.value.length > 0
});然后,您可以只检查$elementsWithValue长度。
发布于 2013-05-29 03:41:42
在重新格式化代码以提高可读性后,您似乎缺少了结束右大括号},这是这个问题中的拼写错误,还是代码中的错误?
此外,您的第二个条件缺少右括号)。当你在你测试的浏览器中打开控制台时,你注意到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!");
}
}发布于 2013-05-29 03:45:58
如果你的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");
}https://stackoverflow.com/questions/16800053
复制相似问题