【发布时间】:2020-03-20 13:04:22
【问题描述】:
引用@DanSingerman,
我知道按值设置它非常简单。例如
$("#my-select").val(myVal);
参考this previously asked similar question:
我正在尝试通过设置 SELECTed OPTION
$("#" + fragment + ".gender").val('').prop('disabled', false);
回复
$("#" + fragment + ".gender").val(gender).prop('disabled', 'disabled');
但什么也没发生。使用 [name= 也不起作用。
选择(在一个片段 personInstance(participant) 中):
<select class="custom-select custom-select" th:id="__${personInstance}__.gender"
th:name="__${personInstance}__.gender">
<option value="" selected
th:attr="data-salid=''"
th:text="#{option.select}">Select
</option>
<option th:each="salIter : ${salutations}"
th:attr="data-salid='__${salIter.baseIdentity.id}__'"
th:value="${{salIter.gender}}"
th:inline=text> [[#{${'gender.' + salIter.gender}}]]
</option>
</select>
代码:
$("select[name$='.salutationId']").change(function (event) {
/* propagate salutation gender to gender field and enable/disable */
var fragment = this.name.match(/^(\w+)\..*$/);
var salid = $(this).val(); //JS: this.options[this.selectedIndex].value;
var gender = this.options[this.selectedIndex].getAttribute('data-gender');
console.log("sal/Frag = " + fragment[1] + "SX:" + this.selectedIndex + " val:-" + salid + "- GND:" + gender + " set:" + fragment[1] + ".gender");
if (salid === '') {
$('[name="' + fragment[1] + '.gender"]').val('').prop('disabled', false);
} else {
$('[name="' + fragment[1] + '.gender"]').val(gender).prop('disabled', 'disabled');
}
});
生成的 HTML:
<select class="custom-select form-control" id="participant.salutationId"
name="participant.salutationId">
<option value="" selected>-Auswählen-</option>
<option value="1"
data-gender="MALE">Herr</option>
<option value="2"
data-gender="FEMALE">Frau</option>
<option value="3"
data-gender="DIVERS">Divers</option>
</select>
和
<select class="custom-select form-control" id="participant.gender"
name="participant.gender">
<option value="" selected>-Auswählen-</option>
<option value="MALE"
data-salid="1"> Männlich
</option>
<option value="FEMALE"
data-salid="2"> Weiblich
</option>
<option value="DIVERS"
data-salid="3"> Divers
</option>
</select>
Gender 是一个 ENUM 并映射到外部化文本。 使用 Jquery 3.4.1
SELECT 又有什么特别之处?
【问题讨论】:
-
现在使用名称有效,我在错误的地方有一个“,但我的鼻子上没有眼镜......这不能解释为什么 $('#' + fragment[1] + '.gender ').val(gender) 不起作用。
-
你能发布选择选项的生成HTML吗?我认为价值不匹配......价值观......如果这有任何意义
-
它目前运行良好,所以可以保持原样,但我想了解在选择器中直接使用 ID 的机制...