1

私はちょうど奇妙な振る舞いjQueryに遭遇し、多かれ少なかれわずかな解決策を理解することができません。たとえば、textareaとbuttonがあります。textareaが空の場合、ボタンを無効にしたい。このために私はこの仕事をするハンドラーを持っています。

コードは次のとおりです。

// textarea control
var $textarea = $('#myTextarea');
var $button = $('#myButton');
$textarea.on('input propertychange', function() {
    if($textarea.val().length > 0) {
        $button.removeClass('disabled').removeAttr('disabled');
    } else {
        $button.addClass('disabled').attr('disabled', 'disabled');
    }
});
$button.on('click', function() {
    if ($button.attr("disabled") != null) {
        console.log('Disabled!');
        return false;
    } else {
        // do some stuff and eventually erase textarea 
        $textarea.val('');
    }
});

私の問題は、textarea(コードの終わり)を消去してもボタンが無効にならないことです。任意のアイデアをいただければ幸いです(実際には、私のコードを少し変更したものですが、状況はかなりよく反映されています。それがあなたにとって明確になることを願っています、ありがとう!)

UPDstackoverflow で何も見つかりませんでした。

UPD2 最初に言ったように、フォーストリガーイベントのような回避策を探していませんでした$textarea.val();。Sure@ Madbreaksによって発生したイベントをキャッチできると思いました。@epascarelloのソリューションはかなりうまく機能します、ありがとう。

4

4 に答える 4

3

問題は、JavaScript で値を設定しても、通常はイベントがトリガーされないことですが、自分で行うことができます。

$textarea.val('').trigger("input");
于 2013-01-16T22:14:38.057 に答える
3

多分これを追加するだけです:

else {
    // do some stuff and eventually erase textarea 
    $textarea.val('');
    // notify
    $textarea.trigger('propertychange');
}
于 2013-01-16T22:14:58.257 に答える
0

textarea の値をトリムし、.val() の長さを取得するときに空白がないようにしてください。また、ckEditor のようなテキスト エディターを使用する場合は、書かれているテキストを取得する方法に関するドキュメントを必ずお読みください。

于 2013-01-16T22:17:49.570 に答える