使用文本框水印时不会出现Javascript事件

使用文本框水印时不会出现Javascript事件,javascript,jquery,javascript-events,watermark,Javascript,Jquery,Javascript Events,Watermark,我试图在文本框上实现一个简单的水印,当文本框获得焦点时,水印就会消失。我发现这个jQuery插件似乎工作得很好: 水印的工作原理与此代码所宣传的一样: <script type="text/javascript" src="/includes/_jQuery/_Library/jquery-1.3.1.min.js"></script> <script type="text/javascript" src="/includes/_jQuery/_plugs/_hi

我试图在文本框上实现一个简单的水印,当文本框获得焦点时,水印就会消失。我发现这个jQuery插件似乎工作得很好:

水印的工作原理与此代码所宣传的一样:

<script type="text/javascript" src="/includes/_jQuery/_Library/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/includes/_jQuery/_plugs/_hint/jquery.hint.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $("input[title!=]").hint();
    });
</script>

<table>
    <tr>
        <td><input type="text" title="Blah" /></td>
    </tr>
</table>
有人知道为什么当点击文本框的一部分而不是另一部分时,事件不会冒泡吗

有人知道为什么点击部分文本框时事件不会出现气泡吗

这似乎是一个Firefox特有的bug,影响文本输入和文本区域。您只需几行代码就可以复制它,它与jQuery无关,也与插件无关:

<form onclick="alert('hello')">
    <input type="text" value="hello!" onfocus="this.value=''">
</form>

(虽然我认为该插件确实存在一些相当严重的问题。它忘记对局部变量使用“var”,从而使它们泄漏到全局范围。这会导致同一页面上的多个“.blur”元素失败。另外,“空”值仍将作为标题字符串提交到表单,并且您无法区分“真实”值由与标题字符串匹配的用户键入。)

只有当焦点事件中的输入值发生更改时,该事件才会出现气泡在输入中的文本上发生,并期望将该事件冒泡到每个文本的祖先。但是,当直接父级上的单击事件导致onfocus触发时,该函数正在从其父级中删除该文本。现在没有发生单击事件的可能,也没有可冒泡通过的父链

有人知道为什么点击部分文本框时事件不会出现气泡吗

这似乎是一个Firefox特有的bug,影响文本输入和文本区域。您只需几行代码就可以重现它,它与jQuery无关,也与插件无关:

<form onclick="alert('hello')">
    <input type="text" value="hello!" onfocus="this.value=''">
</form>

(虽然我认为该插件确实存在一些相当严重的问题。它忘记对局部变量使用“var”,从而使它们泄漏到全局范围。这会导致同一页面上的多个“.blur”元素失败。另外,“空”值仍将作为标题字符串提交到表单,并且您无法区分“真实”值由与标题字符串匹配的用户键入。)


只有当焦点事件中的输入值发生更改时,该事件才会出现气泡发生在输入中的文本上,并希望将该事件冒泡到每个文本的祖先。但是,当直接父对象上的单击事件导致onfocus触发时,该函数将从其父对象中删除该文本。现在,没有发生单击事件,没有父链冒泡通过。

感谢您的响应nse!Safari和Chrome中都有这个bug,但这是一个有趣的理论。我会看看是否能找到解决它的方法。嗯,你是对的!有趣的是,IE做得对的案例并不多,但Mozilla和Webkit都失败了!FWIW在Opera上没有这样的bug。哈哈,我也在想同样的事情。我能用150毫秒的速度让它工作nd在删除文本之前延迟,这允许在删除文本之前出现冒泡。不完全是优雅的,但它是有效的。如果你能想出一个更优雅的解决方法,请让我知道。顺便说一句,你对插件的一些评论是不准确的。虽然无法区分真实值和标题,但我是g我正在验证。所有局部变量都是由var设置为局部的,jQuery中的.blur添加到,而不是重写,所以这也不是问题。啊,你说得对,这些是var语句中的逗号,而不是分号分隔的语句。哇,这…有问题。:-)谢谢你的回复!Safari和Chrome都有这个漏洞,但这是一个有趣的理论。我会看看是否能找到解决办法。嗯,你是对的!有趣的是,IE做对了但Mozilla和Webkit都失败的案例并不多!FWIW在Opera上没有这样的漏洞。哈哈,我也在想同样的事情。我是通过pu实现的在删除文本之前延迟150毫秒,这允许在删除文本之前出现冒泡。不完全是优雅的,但它可以工作。如果你能想出一个更优雅的解决方案,请让我知道。顺便说一句,你对插件的一些评论是不准确的。虽然无法区分真正的值标题,我将对此进行验证。所有局部变量都是由var生成的,jQuery中的.blur添加到,而不是重写,所以这也不是问题。啊,你说得对,这些是var语句中的逗号,而不是分号分隔的语句。哇,这…有问题。:-)