如何同步ExtJS的“复选框”(按钮)与Javascript/JQuery?

p1tboqfb  于 2022-11-04  发布在  Java
关注(0)|答案(1)|浏览(130)

我目前正在尝试同步一个页面上的两个checkboxes
我需要同步复选框--为此,我使用了一个Tampermonkey用户脚本来检测其中一个复选框被点击的时间。但是,我不知道该怎么做。
我相信它们实际上并不是复选框,而是类似复选框的ExtJS按钮。我不能用JQuery检查它们是否被选中,因为:一旦按钮后面的JS已经运行,选中的值就被附加到类中。
我已经尝试过preventDefault和stopPropagation,但要么是我用错了,要么是我不了解它的用法。
我不够聪明,不能只调用盒子后面的JS而不是onclick事件。否则,这将解决我的问题。
这是我的代码:

//Variables - "inputEl" is the actual button.
var srcFFR = "checkbox-1097";
var destFFR = "checkbox-1134";
var srcFFRb = "checkbox-1097-inputEl";
var destFFRb = "checkbox-1134-inputEl";

//This checks if they're synchronised on page load and syncs them with no user intervention.
var srcChk = document.getElementById(srcFFR).classList.contains('x-form-cb-checked');
var destChk = document.getElementById(destFFR).classList.contains('x-form-cb-checked');

if (srcChk == true || destChk == false) {
    document.getElementById(destFFRb).click();
} else if (destChk == true || srcChk == false) {
    document.getElementById(srcFFRb).click();
}

//This is where it listens for the click and attempts to synchronize the buttons.

$(document.getElementById(srcFFRb)).on('click', function(e) {
    e.preventDefault();
    if (document.getElementById(srcFFR).classList == document.getElementById(destFFR).classList) {
        return false;
    } else {
        document.getElementById(destFFRb).click();
    }
});

$(document.getElementById(destFFRb)).on('click', function(e) {
    e.preventDefault();
    if (document.getElementById(srcFFR).classList == document.getElementById(destFFR).classList) {
        return false;
    } else {
        document.getElementById(srcFFRb).click();
    }
});

我有点不知所措......任何帮助都将不胜感激。

yhxst69z

yhxst69z1#

我想通了--我是在比较班级名单,而没有挑出我想要真正匹配的东西。
我的解决方案:

$(document.getElementById(srcFFRb)).on('click', function(){
    if (document.getElementById(srcFFR).classList.contains('x-form-cb-checked')
        == document.getElementById(destFFR).classList.contains('x-form-cb-checked')) {
        return false;}
    else {
        document.getElementById(destFFRb).click();;
    }});

$(document.getElementById(destFFRb)).on('click', function(){
    if (document.getElementById(srcFFR).classList.contains('x-form-cb-checked')
        == document.getElementById(destFFR).classList.contains('x-form-cb-checked')) {
        return false;}
    else {
        document.getElementById(srcFFRb).click();;
    }});

相关问题