2017-02-10 44 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

相关问题