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

时间:2013-05-06 18:51:28

标签: php jquery facebox

我无法在我的facebox表单上的任何浏览器中使用.change().click().keydown()触发器。

- 编辑---  问题是facebox CLONES html在对话框元素中显示它。因此,jquery选择器工作,但事件触发器不工作(基于重复)。修复方法是修改facebox并删除.clone()行为。

- 结束编辑 -

以下适用于文档准备工作:

$('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
            });

2 个答案:

答案 0 :(得分:2)

单击“请求帐户”按钮后,您可以复制文档中已存在的表单并显示它。

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

如果您将#req_acct更改为display: block,则可以看到原始表单并查看颜色更改。

答案 1 :(得分:-1)

我怀疑你没有点击你想要的元素.. 这可能是由于你的页面上有一些css重叠了两个不同的元素。(绝对定位或其他东西,我对CSS不太了解)

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

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

然后点击您的文本框,看看您获得的ID是否正确。如果加载了jquery(正如你所证明的那样),这绝对有效。

修改

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

$(this).prop('id')

$(this).attr('id')