从函数中设置选择框值

时间:2017-02-10 22:04:25

标签: javascript jquery

我有一个数据表,每一行都有一组带有日期输入框(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函数中我使用日期id和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,最后一个是给不支持的psuedo":0"。然后我更换了dateIdval = dateIdval.replace(/:/ g," \\:");逃避":"。但错误信息是"不支持psuedo" \: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>

2 个答案:

答案 0 :(得分:1)

.replace()电话应该有效。

您也不需要使用option[value="1"]选择器。只需设置<select>元素的值。

&#13;
&#13;
$(".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");
}
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我们没有这个jquery选择器:$($value "option[value='Y']").prop('selected', true);

至少在$ value之后,您需要 + 作为jquery选择器。以下是一个示例:

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

不要忘记&#39; #gate&#39;。

之后的空格