onBlur和onFocus在单独的jQuery中

时间:2012-02-04 23:31:41

标签: jquery onblur onfocus

这个jQuery不起作用。我知道这看起来很奇怪。但我怎样才能让它发挥作用?

JavaScript部分中的CSS修改无法正常运行。在.blur上,如果字段中没有任何内容,jQuery应该更改文本框的颜色。

blur上如果字段中没有任何内容,则文本应该更改,文本颜色应该更改。在focus上,如果字段中有“正在搜索”,则文本应该更改,文本颜色应该更改。

http://jsfiddle.net/7P5J8/

我是否必须删除内联JavaScript?

4 个答案:

答案 0 :(得分:2)

试试这个,看看它是否解决了问题:

$("#additionalsearch").focus(function(){
if (this.value == "Search Within")
{
    this.value = "";
    $(this).css('color','#000000');
 }
});

$("#additionalsearch").blur(function(){

        if (this.value == "")
        {
            this.value = "Search Within";
            $(this).css('color','#a9a9a9');
        }
    });

http://jsfiddle.net/GhA2u/

答案 1 :(得分:2)

您必须删除内联代码,因为它在事件处理程序之前运行 您应该仅保留HTML以进行持久化,<script>标记内和.JS文件中的所有逻辑和JavaScript都更好。

fixed JSFiddle

<强> JQuery的

$(document).ready(function() {
    $('input#additionalsearch').focus(function() {
        if (this.value === 'Search Within') {
            $(this).css('color', '#000000').val('');
        }
    });
    $('input#additionalsearch').blur(function() {
        if (this.value === '') {
            $(this).css('color', 'red').val('Search Within');
        }
    });
});

<强> HTML

<input id="additionalsearch" type="text" value="Search Within" />

答案 2 :(得分:0)

通过Firebug运行代码,看看css属性/属性是什么。内联应覆盖javascript属性设置/ css样式属性,除非您使用重要!属性。

答案 3 :(得分:0)

我最好的猜测是内联函数首先运行,因此当该字段为空并且您单击时,它将设置为具有内联函数的内容。所以无论如何,当调用jquery onblur时,字段总是包含文本(因为即使它没有并且onblur被调用,内联函数在jquery运行之前添加文本)。

你能详细说明你想要发生什么吗?也许我可以帮忙。