2016-11-03 39 views
6

我有一個JavaScript腳本,它查找值和下拉列表,並根據值的內容更改下一個下拉菜單,但是這將不再適用於因爲我需要將價值回傳給紅寶石,所以我可以將它保存在會話中。如何讓我的javascript查找類或val以外的任何其他內容

$(document).ready(function() { 
 
    $('#Exposures').bind('change', function() { 
 
     var elements = $('div.exposures').children().hide(); // hide all the elements 
 
     var value = $(this).val(); 
 

 
     if (value.length) { // if something is selected 
 
      elements.filter('.' + value).show(); // show the ones we want 
 
     } 
 
    }).trigger('change'); 
 
    
 
    $('.second-level-select').bind('change', function() { 
 
     var elements = $('div.second-level-container').children().hide(); // hide all the elements 
 
     var value = $(this).val(); 
 

 
     if (value.length) { // if something is selected 
 
      elements.filter('.' + value).show(); // show the ones we want 
 
     } 
 
    }).trigger('change'); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<select class="pmmargin3 exp" size="1" id="Exposures" title="" name="exposures_pt1"> 
 
    <option selected disabled hidden style='display:none' value=''>-Please select an option-</option> 
 
    <option value="1">thing1</option> 
 
    <option value="1">thing2</option> 
 
    <option value="2">thing3</option> 
 
    <option value="1">thing4</option> 
 
    <option value="3">thing5</option> 
 
    
 
    </select> 
 

 
    <div class="container exposures leftmargin exp"> 
 
    <div class="1"> 
 
     <select class="second-level-select" name="exposures_pt2a"> 
 
      <option selected disabled hidden style='display:none' value=''>-  Please select an option-</option> 
 
      <option value="guardrail_system">thing1</option> 
 
      <option value="personal_fall">thing2</option> 
 
      <option value="safety_net">thing3</option> 
 
     </select> 
 
    </div> 
 
    <div class="2"> 
 
     <select class="second-level-select" name="exposures_pt2b"> 
 
      <option selected disabled hidden style='display:none' value=''>-Please select an option-</option> 
 
      <option value="guardrail_system">thing1</option> 
 
      <option value="personal_fall">thing2</option> 
 
      <option value="safety_net">thing3</option> 
 
      <option value="infeasibility_option">thing4</option> 
 
     </select> 
 
    </div> 
 
    <div class="3"> 
 
     <select class="second-level-select" name="exposures_pt2c"> 
 
      <option selected disabled hidden style='display:none' value=''>-Please select an option-</option> 
 
      <option value="current_subpart">thing5</option> 
 
      <option value="proposed_subpart">thing6</option> 
 
     </select> 
 
    </div> 
 
    </div>

感謝您的幫助,我是相當新的Javascript和我盡我所能,但仍需要一些指導。

回答

1

嗯,我想出瞭如何讓我的結果回來,並保持在我的代碼相同的價值,所以沒有其他的突破是我是如何做到的。

$(document).ready(function() { 
$('#Exposures').bind('change', function() { 
    var elements = $('div.exposures').children().hide(); // hide all the elements 
    var value = $(this).val(); 
    *added* var exposuredd = document.getElementById("Exposures"); 
    *added* var selectedText = exposuredd.options[exposuredd.selectedIndex].text; 
*added* document.getElementById("exp1").innerHTML="<input type='text' name='exposures_pt1' value='"+selectedText+"' >"; 

    if (value.length) { // if somethings' selected 
     elements.filter('.' + value).show(); // show the ones we want 
    } 
}).trigger('change'); 

$('.second-level-select').bind('change', function() { 
    var elements = $('div.second-level-container').children().hide(); // hide all the elements 
    var value = $(this).val(); 

    if (value.length) { // if somethings' selected 
     elements.filter('.' + value).show(); // show the ones we want 
    } 
}).trigger('change'); 

}); 

這需要在使用這種再培訓局的IM在

<p hidden id="exp1"></p> 

所以,現在我可以通過任何文本是我的選擇紅寶石比如......「嘿,我在這裏」

<option value="1">Hey Here I am</option> 
2

根據我的理解。您想要將第一個下拉列表中選定的數據發送給ruby以將其保存在Session中。 如果是這樣,每次選擇都可以通過cookie觸發AJAX調用,並相應地更新會話對象,並隨後在第二個下拉列表中顯示它。

儘管onChange AJAX並不是一個非常好的建議,但在這種情況下,您可以將選定的選項保存到瀏覽器sessionStorage中,然後在選擇結束時(下拉)循環將其添加到會話對象,並通過單個ajax添加到您的服務器。

+0

那麼什麼是更好的選擇的話,我寧願使用正確的選擇而不是一個只「works'.Also我從來沒有與阿賈克斯周圍玩過沒.... –

+0

我會建議將它保存在瀏覽器sessionStorage中觸發一個ajax調用到服務器來保存。以這種方式,減少服務器的負載。 – Jyotirmay

相關問題