我正在尝试使用 jQuery 在两个不同的选择器上触发“更改”事件,但由于某种原因,当我这样做时,实际上似乎只有第一个选择器触发了该事件。
这就是我正在做的事情:
jQuery(first_field).trigger('change');
jQuery(second_field).trigger('change');
我想这样做是因为我有用于更改事件的功能,selector_1
并且selector_2
可以禁用表单中的某些输入字段。我评估第二个更改事件没有被触发的方式是因为这些输入字段没有被禁用。
我知道禁用函数有效并且 jQuery .change 事件有效,因为如果我只是使用鼠标更改表单,这些函数的行为将符合我的预期。
更新:
这是启用/禁用代码:
function disable_field(s) {
if ($(s).disabled != true) {
$(s).disabled = true;
/* Reset text value */
if ($(s).type == "text") {
$(s).value = "";
/* Reset selected value */
} else if ($(s).type == "select-one") {
$(s).selectedIndex = 0;
}
}
}
function enable_field(s) {
if ($(s).disabled != false) {
$(s).disabled = false;
}
}
请注意,此代码与 Qualtrics 一起使用;调查软件,可让您将 JS 与您的问题放在一起。他们有自己的选择器分配给$()
它只允许 id。
这是.change
代码:
jQuery(first_field).change(function() {
/* Parse id */
var the_id = this.id;
var this_question = the_id.slice(-1);
the_id = the_id.substring(0, the_id.length - 3);
/* Create selectors */
var selector2 = the_id + '2~' + this_question;
var selector3 = the_id + '3~' + this_question + '~1~TEXT';
/* Handle toggle */
if (this.selectedIndex == 1) {
disable_field(selector2);
disable_field(selector3);
} else {
/* Account for value of second_field */
if ($(selector2).selectedIndex != 1;) {
enable_field(selector3);
}
enable_field(selector2);
}
});
jQuery(second_field).change(function () {
/* Parse id */
var the_id = this.id;
var this_question = the_id.slice(-1);
the_id = the_id.substring(0, the_id.length - 3);
/* Create selectors */
var selector3 = the_id + '3~' + this_question + '~1~TEXT';
/* Handle toggle */
if (this.selectedIndex == 1) {
disable_field(selector3);
} else {
enable_field(selector3);
}
});