Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

他 js による自動入力時(郵便番号から住所入力など)に文字色を修正する処理 #10

Open
terunuma opened this issue Jan 13, 2015 · 2 comments

Comments

@terunuma
Copy link

標題の件、別の JavaScript から input を自動入力した場合に文字色が戻らない問題があります。

案の一つとしては、バージョン 1.2 では 92 行目に change イベントにて色を戻す処理を書くなどどうでしょうか。
以下の例では _clearPlaceholder 関数にあった色を戻す処理を関数化し、change イベントが発生する毎に色を戻しています。

if ( settings.likeApple === true ) {
    $self.bind('mousedown', moveCursorToHead);
    $self.bind('keydown', onKeydown);
    $self.bind('keyup', resetPlaceholder);
} else {
    $self.bind('focus', onFocus);
    $self.bind('blur', resetPlaceholder);
}
$self.bind('change', _clearPlaceholder);

_clearPlaceholder だと self.value = ''; の処理があるので入力毎に値を消してしまう気がするのですが、
なぜか IE8, 9 では期待する動作となります。

以上、確認をお願い致します。

@terunuma
Copy link
Author

自己レスです。

そもそも他 js からの値の書き換え (jQuery.val() など) では change イベントが発生しないのでダメでした、、、
他 js に .trigger('keyup') を入れる方法で今回は対応します。失礼しました。

@terunuma
Copy link
Author

別の解決策として、onFocus 時に必ず色を戻す処理を入れてみました。
根本の解決にはなってないですが、他 js で対応出来ない場合にもある程度の使い勝手がよくなるかと存じます。
(focus 時に色が変わるので、入力値が placeholder-string と異なることが認識しやすい)

onFocus = function()
{
    if ( this.value === $.data(this, 'placeholder-string') ) {
        _clearPlaceholder(this);
    }
    $(self).css('color', $.data(self, 'placeholder-color'));
},

連投すみません。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant