我正试图使用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);
}
});
尝试使用.add()
$(selector_1).add(selector_2).trigger('change');