0

Jqueryで単純なことをしようとすると、とてもイライラすることがあります。ユーザーが独自のものを書くことができるテキストエリアがありますが、定義済みのフレーズから選択して追加することもできます

htmlは次のようになります

<textarea id="id_text"></textarea>
<div id="predef-phrases>
    <input type="checkbox"><label>checkbox1</label> 
    <input type="checkbox"><label>checkbox2</label>
    <input type="checkbox"><label>checkbox3</label>
    <input type="checkbox"><label>checkbox4</label>     
</div>
<input type="button" id="add" name="add" value="Add phrases" />

そしてjqueryは次のようになります:

$(document).read(function(){
      $("#add").click(function(){
        $("#predef-phrases input[type=checkbox").each(function(i, checkbox){
            if($(checkbox).is(":checked")){
                text_value = $("#id_text").val();
                checkbox_text = $(checkbox).next('label').text();
                $("#id_text").append(checkbox_text+'\n');

            }
        });
    });
});

ユーザーがテキストを入力するまで、すべてが正常に機能します。次に、ユーザーが追加ボタンを押したときに、定義済みのフレーズがテキストエリアに追加されません。何か不足していますか?

4

2 に答える 2

1

append「初期」値を変更するだけで、値を直接変更する を使用しないでください。

$("#id_text")[0].value += checkbox_text+'\n';

val必要に応じて、次の関数も使用できます。

$("#id_text").val(function(_,text){ return text+checkbox_text+'\n'});

ただし、HTML (閉じ引用符がない) とセレクター (閉じ中かっこがない) にもエラーがあります。ここに固定コードがあります

于 2013-11-05T10:33:57.077 に答える
0

テキストエリアに append() を使用しないでください。代わりに、次のことを試すことができます。

$("#id_text").val($("#id_text").val() + '\n' +checkbox_text);
于 2013-11-05T10:50:36.893 に答える