2017-02-10 38 views
0

我有一個數據表,並且每一行都有一組具有日期輸入框(Jquery datepicker)的列,並且表中的一列具有dropdwon框值爲Yes和No.當任何一個日期輸入框被選中的值,然後我應該預先填充下拉是(默認情況下是否)。使用onselect事件我傳遞日期框ID,與該ID我弄出了下拉ID。爲日期框生成的ID是「tableId:表中的行號:dateID」,所以在我的情況下它生成爲「vendorTbl:0:rskDate」。設置選擇框的值從一個函數

$(".rejct_input_date").datepicker({            
    changeMonth: true, 
    changeYear: true, 
    onSelect: function(selected,evnt) { 
    updateRiskIdentified(evnt); 
    }}); 

現在updateRiskIdentifed功能我使用日期標識和I幀的DDL ID像

function updateRiskIdentified(value){      
     var dateIdval = value.id; 
      dateIdval = dateIdval.substring(0, dateIdval.lastIndexOf('_')) + "_rskIdntfd"; 
      var riskId = "#"+dateIdval+" "; 
      alert(riskId); 
      $($riskId + "option[value='1']").prop('selected', true);    
    } 

現在我可以生成ID,我需要,最後是給不支持的僞 「:0」 。然後我換成了dateIdval = dateIdval.replace(/:/ g,「\\:」);逃避「:」。但是,該錯誤信息是「不支持僞 「\:0」 這是我的選擇

<f:selectItem itemLabel="Yes" itemValue="Y"></f:selectItem> 
<f:selectItem itemLabel="No" itemValue=""></f:selectItem> 

和生成的HTML:

<select name="vendorArtifacts:0:_rskIdntfd" class="af_selectOneChoice_content" id="vendorArtifacts:0:_rskIdntfd" style="width: 100%;"><option value="0">Yes</option><option value="1" selected="">No</option><option value="2">N/A</option></select> 
+0

是那些'選項'或其他東西('selectItem')? –

+1

顯示你如何調用'updateRiskIdentified'。 「價值」是什麼? – Barmar

+0

你能提供一個JSFiddle嗎? – Thanasis

回答

1

我們沒有這個jQuery選擇:$($value "option[value='Y']").prop('selected', true);

至少在$值後,你需要一個+成爲一個jQuery選擇器。下面是一個示例:

<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> 
 

 
<select id="gate"> 
 
     <option value="x">x</option> 
 
     <option value="Y">y</option> 
 
    </select> 
 

 
<script> 
 
    var $value = '#gate '; 
 
     $($value + "option[value='Y']").prop('selected', true); 
 
    </script>

的 '#gate' 後,不要忘了空間。

1

.replace()調用應該工作

你也別不需要使用option[value="1"]選擇器,只需設置<select>元素的值。

$(".button").click(function() { 
 
    updateRiskIdentified(this); 
 
}); 
 

 
function updateRiskIdentified(value) { 
 
    var dateIdval = value.id; 
 
    dateIdval = dateIdval.substring(0, dateIdval.lastIndexOf('_')) + "_rskIdntfd"; 
 
    dateIdval = dateIdval.replace(/\:/g, "\\:"); 
 
    var riskId = "#" + dateIdval; 
 
    console.log(riskId); 
 
    $(riskId).val("1"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="foo:bar:0_rskIdntfd"> 
 
    <option value="">Default</option> 
 
    <option value="1">Choose 1</option> 
 
    <option value="2">Choose 2</option> 
 
</select> 
 

 
<button class="button" id="foo:bar:0_button">Click</button>

+0

這是生成的HTML''這裏是更新函數updateRiskIdentified(value){ ('#vendorArtifacts \\:0 \\:_ rskIdntfd「)。val('1')。prop('selected',true); \t \t }' – Pat

+0

爲什麼你在函數中硬編碼ID,而不是使用'value'參數? – Barmar

+0

我已經爲我的問題添加了更多詳細信息。現在它詳細說明了爲什麼我硬編碼或生成ID。 – Pat

相關問題