2013-12-18 62 views
0

這是我的第一篇文章。我正在研究一個web應用程序,它將對五個元素之間的五個不同的值進行排序,但我不確定如何最好地完成它。試圖組織用戶輸入元素之間的值

有五個選擇框元素在它們之間共享五個值。我將它們稱爲元素1-5和值A-E。目標是在所有五個元素之間只使用一次每個值。因此,如果我有:

1 = A,2 = B,3 = C,並且用戶將元素2中的值從B更改爲A,元素1需要更改爲B,以便每個值只出現一次。

我目前的想法是嘗試使用一個函數,它可以從每個元素中通過onchange觸發,從觸發元素獲取新值,然後找到具有相同值的其他元素並更新它以使用未使用的值。每一個選擇框看起來是這樣的:

<select id="1" onchange="updateElements(this);"> 

然後函數會是這個樣子:

function updateElements(trigger) 
{ 
    var new_value = document.getElementById('trigger').value; 

    // here we check all the elements minus the trigger to find one 
    // with a value that matches new_value, but how? Then we go to... 

    // here where we compare all of the values of the elements against 
    // the list of all values to determine which one isn't being used 

    // finally we set the element that had the matching value to use 
    // the unused value 
    document.getElementById('matchingelement').value = 'unused_value'; 
} 

我堅持,因爲我無法弄清楚如何檢查所有的元素找一個具有匹配的值,我也不知道如何比較使用的值以確定哪一個未被使用。

任何想法?也請隨時告訴我,如果我完全錯誤的軌道。

回答

1

我假設你正在使用jQuery,因爲它是你的問題的標籤之一。

var previous_value; 
$('select').focus(function(e) { 

    previous_value = $(this).val(); 

}).change(function(e) { 

    var new_value = $(this).val(); 
    $('select:contains(' + new_value + ')').not($(this)).val(previous_value); 

}); 

我想到了這樣的事情。只要您將選擇元素聚焦,其當前值將保存在變量previous_value中。在更改時,其新值將被保存到new_value。同時它將其中包含新文本的select元素的值設置爲previous_value。此外,它會仔細檢查所選元素是否不是此元素。

我想這是關於你想要的。

+1

你的邏輯比我的完整。尼斯。 – isherwood

0

首先,不使用內聯JS點擊處理程序,除非你有:

​​

然後,使用jQuery,如果你使用jQuery:

function updateElements(trigger) { 
    var new_value = $('#trigger').value; 
    ... 
    $('#matchingelement').value = 'unused_value'; 
} 

我認爲我對你正確的軌道。我會用這樣的事情讓每個選擇的值:

$('select').change(function() { 
    var my_val = $(this).val(); 

    $('select').each(function() { 
     if ($(this).val() == my_val) { 
      $(this).val(unused_val); 
      return 
     } 
    }); 
}); 
+0

更新了更多的細節。 – isherwood

0

你需要一些條件語句...

抓住你的價值觀

var elem1 = document.getElementById("1"); 
var elem2 = document.getElementById("2"); 

等等

然後交叉檢查你的元素

if(elem1 = "a") 

{ 
    elem2.value="blah"; 
}else{change elements accordingly} 

你可以檢查空以及

如果你想下拉值的一些實際例子檢查,我可以上傳到