0

非常に長い話ですが、初心者であることを除けば、なぜこれが機能しないのかわかりません。全体的に、私はさまざまなことをチェックするためのさまざまな機能を持っています。

この例のために、デフォルト値が「ここに名前を入力してください」というフォーム(テストする1つのフィールド)があります。したがって、以下のhtml

<input type="text" value="enter name here" id="fieldOne"/>

以下のjs。

// sample vars

var fieldOne = $('#fieldOne');

//以下のこの関数はぼかし時に起動します。

function checkVal(){
    if($(this).val()== $(this).attr('defaultValue')){
        $(this).css("background-color","red");
        $(this).css("color","white");   
    } else if($(this).val()==""){
        $(this).css("background-color","red");
        $(this).css("color","white");   
        $(this).val("oopsiiee, you forgot this one");

    } else {
        $(this).css("background-color","green");
        $(this).css("color","white");   
    }

}

次に、フォームフィールドで、ぼかしでこれを行います

fieldOne.blur(checkVal);等...

上記は機能しますが、

これでデフォルト値が設定されているので、ユーザーが上記のフィールドをクリックすると、そのdef値が表示されなくなるようにします。

だから私はこのようなことをします:

function clearField(){
  $(this).val("");
}

これは動作します

fieldOne.click(clearField);等...

問題は、これにより、データがdefからwhatに変更された場合でも、入力されたmssgが再び消えてしまうことです。この単純な関数を編集して、mssgがデフォルトの場合にクリアするようにします。mssgがデフォルトでない場合、それは変更されたことを意味するので、そのままにしておきます。だからこれに私は全体を壊すこれを書きます。

function clearField(){
    if($(this).val() == $(this).attr('defaultValue')){
        $(this).val() == "";
    }
}

何が起こっているのかわからない。

IVEも試してみました

function clearField(){
    if($(this).val() == $(this).attr('defaultValue')){
        $(this).attr('defaultValue') == "";
    }
}

ヒント、アイデア、修正など、私は謙虚に受け入れ/感謝します

よろしくお願いします。

4

1 に答える 1

1

このようなことはあなたが達成しようとしていることですか?

$inputs = $('input[type=text], input[type=password]');

$inputs.focus(function() {
    if(this.value==this.defaultValue)
    {
        this.value='';
    }
}).blur(function() {
    if($.trim(this.value)=='')
    {
        this.value=this.defaultValue;
    }    
});

この例のフィドル:http://jsfiddle.net/yajxr/2/

于 2012-05-16T14:13:42.150 に答える