2017-05-29 10 views
0

入力フィールドに入力が追加されたときにボタンが表示されますが、入力を削除するとボタンが非表示になります。入力フィールドに値があるかどうかによって、ボタンが表示/非表示になります

私の唯一の解決策は、関数を2つの独立した関数に分割することです。 これは、クリック時に入力フィールドに入力を追加し、次にinput.valを追跡し、ボタンの非表示/表示エフェクトを制御する別の関数です。

それを行うより良い方法でしょうか?

$("#peopleInPopup").on('click', '.list-group-item', function() { 
    var peopleName = $(this).children("span").text(); 
    var peopleID = $(this).children("span").attr("class"); 
    var input = $("#friendsNames"); 
    input.val(input.val() + peopleName + ""); 
    if (input.val().length === 0) { 
    $("#checkButton").toggle(false); 
    console.log("button should NOT display"); 
    } else { 
    console.log("button should display"); 
    $("#checkButton").toggle(true); 
    } 
    $("#checkButton").click(function() { 
    var newParticipants = input.val(); 
    socket.emit("addParticipantsToConversation", newParticipants); 
    $("#chatToInfo").append(", ", input.val()); 
    $("#friendsNames").val(""); 
    $(":mobile-pagecontainer").pagecontainer("change", $("#pagefour"), { 
     transition: "slidedown" 
    }); 
    }); 
}); 
+2

あなたは現在の問題を示すために、既存のコード、HTMLおよびその他の関連作品を投稿した場合、それは問題の我々への代替解決策を見てより多くのを助けます再現できません。 – Nope

+0

あなたの右の@Fran、でも、入力フィールドに追加できるアイテムはプログラムによって生成されるので、質問に追加するのは複雑になります。しかし、私はあなたのポイントを間違いなく見ています – JonasSH

+0

質問するには「それはもっと良い方法でしょうか?」ということは、あなたが見せているコードが実用的な解決策であることを意味し、それが事実なら、この問題は主に問題を解決しようとしているわけではないので、主に意見に基づいています:(実際の壊れたコードを見ることなく、あなたには推測できない解決策を与えるのは難しいです。 – Nope

答えて

0

代わりにjQueryの代わりにshowとhideを使用します。私はあなたが入力が変化しているので、これが起こりたいと思うので、私はkeyup(onChangeまたはalternativesを使うことができます)でスローしました。マークアップ

少しあなたのコードを微調整...

$('input').on('keyup', function (event) { 
    let value = event.target.value; 

    if (value && value !== '' && value.length > 0) { 
    $('#myButton').show(); 
    } else { 
    $('#myButton').hide(); 
    } 
}) 

...

<input id='input' /> 
<button id='myButton'>GO</button> 

そして、基本スタイルのいくつかの並べ替え...

#go { 
    display: none; 
} 

は、トリックを行います?

0

私は実際に私の問題の解決策を見つけました。以下のコードは、それが動作します:

$("#peopleInPopup").on('click', '.list-group-item', function(){ 
 
      var peopleName = $(this).children("span").text(); 
 
      var peopleID = $(this).children("span").attr("class"); 
 
      var input = $("#friendsNames"); 
 
      input.val(input.val() + peopleName + ""); 
 
      $("#checkButton").toggle(true); 
 
      $("#friendsNames").on('input', function(event) { 
 
      if (this.value.length === 0) { 
 
      console.log("Works!"); 
 
      $("#checkButton").toggle(false); 
 
      console.log("button should NOT display"); 
 
      } else { 
 
      console.log("button should display"); 
 
      $("#checkButton").toggle(true); 
 
      } 
 
      }); 
 
      $("#checkButton").click(function(){ 
 
      var newParticipants = input.val(); 
 
      socket.emit("addParticipantsToConversation", newParticipants); 
 
      $("#chatToInfo").append(", ",input.val()); 
 
      $("#friendsNames").val(""); 
 
      $(":mobile-pagecontainer").pagecontainer("change", $("#pagefour"), { transition: "slidedown" }); 
 
      }); 
 
     });

関連する問題