2017-03-13 3 views
1

:以上0選択したオプションがある場合、私はやりたい何更新のTextArea値Iは、リストボックスやテキストエリアを持っている場合は

<textarea id="MyTextArea"></textarea> 

<select id="SelectList" multiple> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

が... ..ですそして追加テキストThere are selectionsをテキストエリアに追加します。

0オプションが選択されているポイントまでのオプションの選択を解除した場合、その文字列をテキストエリアから消去しますが、ユーザがそのテキストエリアに入力したものはすべて保持します。ここで

は私が持っているものである:これは一度だけ文字列を追加するために働く

$("#SelectList").change(function(){ 
    var count = $("#SelectList> option:selected").length; 
    var string = "There are selections."; 
    var txtVal = $("#MyTextArea").val(); 

    if (count > 0 && txtVal.indexOf(string) == -1) { 
     $("#MyTextArea").append(string); 
    } 
    else if (count > 0 && txtVal.indexOf(string) != -1) { 
    } 
    else if (count === 0 && txtVal.indexOf(string) != -1) { 
     var indexOfString = $("#MyTextArea").value.indexOf(string); 
     $("#MyTextArea").value.substring(0, indexOfString - 1); 
    } 
}); 

0選択肢があるように私はすべてのオプションを選択解除する場合でも..私はこれを取得:

このラインでは、未定義またはnull参照

のプロパティ「のindexOf」を取得できません:var indexOfString = $("#MyTextArea").value.indexOf(string);

何か助けていただければ幸いです。

答えて

2

それは次のようになります。

var indexOfString = $("#MyTextArea").val().indexOf(string); 

$("#MyTextArea")は、jQueryの要素

あるので
2

.valueはあなたのように、代わりにあなたがval()を使用することができjQueryオブジェクト$("#MyTextArea")でそれを呼び出すことはできません純粋なjsの方法です:あなたはすでに変数txtVal上の値を保存したので、

$("#MyTextArea").val().indexOf(string); 

そして、あなたは可能性

$("#SelectList").change(function(){ 
    ... 
    else if (count === 0 && txtVal.indexOf(string) != -1) { 
     var indexOfString = txtVal.indexOf(string); 
     txtVal.substring(0, indexOfString - 1); 
    } 
}); 

注:同じようにそれを呼び出すあなたが代わりにtextarea上のuをappend()メソッドを使用しないでくださいSE .val()

$("#MyTextArea").val(txtVal + string); 

の代わりに:

$("#MyTextArea").append(string); 

・ホープ、このことができます。

関連する問題