Facebox对话框- jQuery选择器修改输入字段,但没有事件触发器工作


Facebox Dialog boxes - jQuery selectors modify input fields, but no event triggers work

我无法获得.change(), .click().keydown()触发器在我的facebox表单上的任何浏览器中工作

——EDIT——问题是,facebox克隆html显示它在对话框元素。因此,jquery选择器可以工作,但事件触发器不能(基于副本)。修复方法是修改facebox并删除.clone()行为。

——END EDIT——

以下作品的文档准备:

$('input#testE').css('background-color', 'red');

,其中#testE是文本输入。加载时,文本框背景为红色。然而…

$('input#testE').keydown(function() { 
    $('input#testE').css('background-color', 'red');
});

不触发。我也试过.change().click()。它也不会打印到控制台进行测试。我的代码在jsFiddle中工作得很好,但在我的环境中不起作用。对此有什么想法吗?

编辑……

澄清文件准备问题:

    $(document).ready(function() { //on document load
        console.log('test'); // this works
        $('input#testE').keydown(function() { //won't fire
            $('input#testE').css('background-color', 'red');
        });

                   $('input#testE').css('background-color', 'blue'); //works
            });

当您点击"Request an Account"按钮时,您将复制文档中已经存在的表单并显示它。

当您复制表单时,您将使用其当前的内联样式(黄色),但您不使用事件处理程序。

如果你把#req_acct改成display: block,你可以看到原来的形状和颜色的变化。

我怀疑你没有点击你真正想要的元素。这可能是由于你的页面上的一些css重叠了两个不同的元素。(绝对定位之类的,我不太懂CSS)

您可以使用下面的方法检查:

$('*').click(function(){
    console.log($(this).prop('id'));
});

然后点击你的文本框,看看你得到的ID是否正确。如果加载了jquery(正如您所证明的),这绝对可以工作。

编辑:

如果.prop不起作用,您可能使用的是旧版本的Jquery。你需要用attr代替道具。所以请替换

$(this).prop('id')

$(this).attr('id')