3

フォーカスした後、divのborder-bottomの色を変えるスクリプトを作ってみました

<input type="text">

他の場所をクリックした後、デフォルトの色に戻ります。

これは私が試したものです:

CSS:

.div1 {border-bottom:1px solid #ccc;}

Javascript:

function inputFocus(){ $(".div1").css("border-bottom","1px solid #ffba00"); };

HTML:

<input type="text" onFocus="inputFocus();">

最初の部分 (フォーカス時に色を変更する) は正常に動作しますが、他の場所をクリックした後 (入力にフォーカスしていない)、css ファイルで設定されている通常のスタイルに戻りません。

何が間違っているのですか?

4

7 に答える 7

2

私はお勧めします:

$('input').focus(
    function(){
        $(this).css('border-bottom','1px solid #000');
    }).blur(
        function(){
            $(this).css('border-bottom','1px solid #ccc');
        });​

JS フィドルのデモ

ただし、CSS に慣れている場合:

input:focus,
input:active {
    border-bottom: 1px solid #000;
}

JS フィドルのデモ

于 2012-04-29T17:20:25.560 に答える
1
$('input').focus(function(){
    $(this).css('border-bottom-color','#ffba00');
});
$('input').blur(function(){
    $(this).css('border-bottom-color','#ccc');
});
于 2012-04-29T17:24:20.117 に答える
0

変更をロールバックするには、関数を onBlur イベントに追加する必要があります

于 2012-04-29T17:21:10.447 に答える
0

onBlurイベントを使用する必要があります。

JavaScript:

function inputBlur() {
    $(".div1").css("border-bottom","1px solid #ccc");
}

HTML:

<input type="text" class="div1" onFocus="inputFocus();" onBlur="inputBlur();">

ただし、より良いオプションは、クラスの切り替えを使用することです。

HTML:

<input type="text" class="myinput">

CSS:

.myinput {
    border-bottom:1px solid #ccc;
}

.myinput.active {
    border-bottom:1px solid #ffba00;
}

JavaScript:

$(function() {
    $(".myinput").on("focus", function() {
        $(this).addClass("active");
    }).on("blur", function() {
        $(this).removeClass("active");
    });
});
于 2012-04-29T17:24:44.843 に答える
0

これを行うために JavaScript を使用しないでください。CSS には、:focusこれにより適したセレクターがあります。

.div1 {border-bottom:1px solid #ccc;}
.div1:focus {border-bottom:1px solid #ffba00;}
于 2012-04-29T17:21:04.460 に答える
0

HTMLで関数を呼び出す代わりに、これを試すことができます:

.border {border-bottom:1px solid #ccc;}

$("input[type='text']").focus(function(){
    $(this).addClass("border")
})

$("input[type='text']").blur(function(){
   $(this).removeClass("border");
})
于 2012-04-29T17:24:52.707 に答える
0

これは、制御からフォーカスを失った後、変更された css が元に戻されないために発生します。

これは役立ちます:

<input type="text" onFocus="inputFocus();" onblur="inputBlur();">

function inputFocus(){ $(".div1").removeAttr('style'); };
于 2012-04-29T17:25:33.360 に答える