问候代码杂耍者!
我正在处理一个令人沮丧的问题,似乎我无法解决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;
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应该启用
答案 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>