启用所有选择选项最多为selectedIndex

时间:2017-11-12 15:47:30

标签: php jquery html ajax

问候代码杂耍者!

我正在处理一个令人沮丧的问题,似乎我无法解决100%我想让它发挥作用。

我有一个具有各种动态选项金额的选择字段(可能超过一个"中间",例如"中间1&# 34;,"中间2" )取消激活并通过php获取和构建。用户必须输入一个号码才能激活并预先选择特定的选择选项。到目前为止,它的工作原理是,它根据用户输入预先选择选项。但我希望它能够启用每个选择选项 预选。



$(document).ready(function() {
    // PRE-SELECT TPOS BASED ON TMEMBER
    $('#inputX').change(function() {
        var member_id = $('#inputX').val();
        // FETCHED BY PHP, NO NEED TO OVERRIDE (WORKS)
	var event_id = <? echo $event_id; ?>;
	var posit_id = <? echo $posit_id; ?>;
				
        // FETCH CURRENT POSITION, MEMBER IS AT
	$.ajax({
            type: 'POST',
            url: 'fetch_pos.php',
            data: {
                   posit_id: posit_id,
                   event_id: event_id,
                   member_id: member_id
                  },
            // GET SELECT OPTION WITH POSITION VALUE MEMBER IS AT [E. G. "START"]
            success: function(html){
                // ENABLE SELECT OPTION
                $("#selectX option[value='" + html + "']").attr("disabled", false);
                // ADD SELECTED ATTRIBUTE
                $("#selectX").val(html).setAttribute("selected", "selected");
				
                // DISABLE EVERY OPTION PAST THE RETURNED VALUE AND
                // ENABLE EVERY "PREVIOUS" OPTION
                $('select#selectX').val(html).children().attr("disabled", false).filter(':selected').nextAll().prop('disabled', true);
            }
        }); 
    });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
    <input type="text" name="inputX" id="inputX" required="required" />
    <select name="selectX" id="selectX" required="required">
        <option selected="selected">Awaiting Input</option>
        <option disabled="disabled" value="Start">Start</option>
        <option disabled="disabled" value="Middle">Middle</option>
        <option disabled="disabled" value="Last">Last</option>
    </select>
</form>
&#13;
&#13;
&#13;

AJAX的返回值是选项值之一,因为我的代码需要使用它们而不是整数为1,2或3(+)。

例如: 我有相同的选择字段,但身份编号为3的成员位于目标位置。所以&#34; 目标&#34;,&#34; 中间&#34;和&#34; 开始&# 34;应该启用。如果会员编号3位于中间位置,我只需 &#34; 启动&#34;和&#34; 中间&#34;启用。

任何帮助?

此致 蒙特利尔

修改

由于误解:忽略AJAX。它只返回值作为成员的位置,因为选项值定义为 - &gt; E.G.ID 1的成员位于&#34;中&#34;,因此选项值=&#34;中&#34;并且应该启用所有之前(选项值=&#34;开始&#34;)。

我只想根据所选返回值选项中的selectIndex启用每个选项减去选项总数。

实施例: 3个选项 返回值是&#34;中&#34;因此selectIndex 1 selectIndex选择选项0和1应该启用

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找类似的东西:

$('select#test')
  //set new value on select
  .val('4')
  // enable all children
  .children().prop('disabled', false)
  // starting at selected option, disable all after it
  .filter(':selected').nextAll().prop('disabled', true)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="test" size="10">
  <option value="1">item 1</option>
  <option value="2">item 2</option>
  <option value="3">item 3</option>
  <option value="4">item 4</option>
  <option value="5">item 5</option>
  <option value="6">item 6</option>
  <option value="7">item 7</option>
  <option value="8">item 8</option>
  <option value="9">item 9</option>
  <option value="10">item 10</option>
</select>