2013-05-28 25 views
0
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保持任何值。第二個條件通過自己的情況,這是我知道整個條件沒有錯誤,但第一個條件沒有通過它應該。我該如何糾正這一點?如何使用JQuery檢查多個元素的值(由其ID標識)?

+3

您沒有使用jQuery。 – SLaks

+0

這是一個_array_(實際上是一個NodeList)。你不能假裝它是一個單一的對象。 – SLaks

+0

依次檢查每個元素。您無法從多個元素中獲取一個值。 – Blazemonger

回答

2

首先:你應該只考慮一個驗證庫。

如果你仍然想這樣做,我會考慮jQuery的filter方法。

這將返回只有具有值的元素:

var $elementsWithValue = $('#Ss_param, #S1_param, #T0_param, #TL_param').filter(function(){ 
    return this.value.length > 0 
}); 

然後,你可以檢查$ elementsWithValue長度。

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!"); 
    } 
} 
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"); 
} 
+0

我不認爲這些代碼在現實生活中會起作用,因爲他可能有一些非_必需的字段和'_param' ID。 – Blazemonger

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測試缺少一個右括號。)

相關問題