2017-04-25 87 views
0

我有一個xhtml頁面,包含標題和詳細信息部分。標題包含過濾器,詳細信息包括根據所選過濾器從數據庫獲取數據。 我的要求是,我的過濾器包含一個帶有2個值的下拉菜單,假設「A」和「B」,所以根據選擇我想禁用其他一些下拉菜單。jquery更改功能

我已經添加下面的代碼片段: -

<script type="text/javascript"> 
       $(function() { 
        $('select').change(function() { 
        alert($(this).val()); 
        if($(this).val() == "A"){ 
         $(document.getElementById('dataForm:listView:filterId:field10value1')).prop("disabled", true); 
         $(document.getElementById('dataForm:listView:filterId:field4value1')).prop("disabled", false); 
         $(document.getElementById('dataForm:listView:filterId:field6value1')).prop("disabled", false); 
        }else if($(this).val() == "R"){ 
         $(document.getElementById('dataForm:listView:filterId:field10value1')).prop("disabled", false); 
         $(document.getElementById('dataForm:listView:filterId:field4value1')).prop("disabled", true); 
         $(document.getElementById('dataForm:listView:filterId:field6value1')).prop("disabled", true); 
        }else{ 
         $(document.getElementById('dataForm:listView:filterId:field10value1')).prop("disabled", false); 
         $(document.getElementById('dataForm:listView:filterId:field4value1')).prop("disabled", false); 
         $(document.getElementById('dataForm:listView:filterId:field6value1')).prop("disabled", false); 
        } 
        }) 
       }) 
      </script> 

這工作得很好,第一次。但是當我點擊應用獲取數據時,下次無法使用。

請幫忙!!

+0

'適用於獲取數據'是做什麼的?看起來它打破了你的變化事件。 – wannadream

+0

「$('select')。on(」change「,」select「,function(){...})」你可以這樣試試。你也可以檢查瀏覽器控制檯,看看是否有任何jscript錯誤。 – ReadyFreddy

+0

在控制檯中沒有錯誤 – Sanky

回答

0

如果您想要一個完整的jQuery解決方案,如下所示。

工作實施例:https://jsfiddle.net/Twisty/hfqc4cz5/

HTML

<div class="ui-widget"> 
    <select> 
    <option></option> 
    <option>A</option> 
    <option>R</option> 
    </select> 
</div> 
<div class="ui-widget"> 
    <input id="dataForm:listView:filterId:field10value1" /> 
    <input id="dataForm:listView:filterId:field4value1" /> 
    <input id="dataForm:listView:filterId:field6value1" /> 
</div> 

的JavaScript

$(function() { 
    $('select').change(function() { 
    var selected = $(this).val(); 
    var field10 = $('#dataForm\\:listView\\:filterId\\:field10value1'), 
     field04 = $('#dataForm\\:listView\\:filterId\\:field4value1'), 
     field06 = $('#dataForm\\:listView\\:filterId\\:field6value1'); 
    switch (selected) { 
     case "A": 
     console.log("A Selected."); 
     field10.prop("disabled", true); 
     field04.prop("disabled", false); 
     field06.prop("disabled", false); 
     break; 
     case "R": 
     console.log("R Selected."); 
     field10.prop("disabled", false); 
     field04.prop("disabled", true); 
     field06.prop("disabled", true); 
     break; 
     default: 
     console.log("'' Selected."); 
     field10.prop("disabled", false); 
     field04.prop("disabled", false); 
     field06.prop("disabled", false); 
    } 
    }); 
}); 

https://api.jquery.com/category/selectors/來自:

要使用任何元字符(如!"#$%&'()*+,./:;<=>[email protected][\]^{|}~)作爲名稱的文字部分,必須使用兩個反斜槓進行轉義:\\。例如,id =「foo.bar」的元素可以使用選擇器$("#foo\\.bar")

我也使用了switch()結構。它做同樣的事情,但我更喜歡它,因爲我可以在未來發展它。

您還會看到我使用jQuery選擇器與原始JavaScript方法。我還將jQuery對象推入自己的變量中以便於使用。

+0

非常感謝:) – Sanky

+0

它工作正常..現在我還有一個問題..我有一個錯誤彈出窗口後來應用過濾器.. – Sanky

+0

會出現什麼錯誤? – Twisty