javascript - Changing Button Text on Text Input - JS, RoR -


i have price range button when clicked open popover. in popover, there 2 input boxes. min rent box , max rent box. once values entered in box price range box display values entered. $2000 $2500. have looked , looked on google , other stackoverflow questions , answers, not sure how accomplish this. appreciated!

erb file:

<div class="col-md-2 col-xs-6">   <a tabindex="0" class="button btn-transparent" id="listing-price-selector" role="button" data-toggle="popover">price range <span class="caret"></span></a> </div>  <div id="listing-price-content" style="display: none;">   <div class="container-fluid">     <div class="row">       <div class="col-xs-6">         <div class="input-group input-group-sm">           <span class="input-group-addon" id="basic-addon1">$</span>           <%= f.text_field :min_price, class: "form-control", placeholder: "min rent", data: { "binding-name" => "min-price" } %>         </div>       </div>       <div class="col-xs-6">         <div class="input-group input-group-sm">           <span class="input-group-addon" id="basic-addon1">$</span>           <%= f.text_field :max_price, class: "form-control", placeholder: "max rent", data: { "binding-name" => "max-price" } %>         </div>       </div>     </div>   </div> </div> 

js file:

$('#listing-price-selector').popover( {   html: true,   trigger: 'manual',   placement: 'bottom',   template:  '<div class="popover price-range-pop" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>',   content: function() {     return $('#listing-price-content').html();   } }); 

i think need trigger function change event (keyup) on either of inputs inside popover.

the tricky thing here, @ least me, content of popover dynamically generated, trying assign event handler elements @ page load won't work.

what work assign event handler once elements have been generated.

there events fired popover can assign handler on, , need.

$("[data-toggle='popover']").on('shown.bs.popover', function(){   $("#listing-price-selector").next().find("#min-price").keyup(modprice);   $("#listing-price-selector").next().find("#max-price").keyup(modprice); }); 

and modprice can function fix value of price range box. like:

function modprice(){   var mn = $("#listing-price-selector").next().find("#min-price").val();   var mx = $("#listing-price-selector").next().find("#max-price").val();   mn = (mn == "") ? 0 : mn;   mx = (mx == "") ? 0 : mx;   $("#listing-price-selector").text(mn + " " + mx); } 

in there can lot more processing, such making sure max on min, or whatever like.

hope helps!

ps - got popover events w3schools ref page: http://www.w3schools.com/bootstrap/bootstrap_ref_js_popover.asp

pps - , fun, made snippet example, here is:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>    <div class="col-md-2 col-xs-6">    <a tabindex="0" class="button btn-transparent" id="listing-price-selector" role="button" data-toggle="popover">price range <span class="caret"></span></a>  </div>  <div class="input-group input-group-sm">    <span class="input-group-addon" id="basic-addon1">$</span>    <input type="text" id="pricebox" />  </div>      <div id="listing-price-content" style="display: none;">    <div class="container-fluid">      <div class="row">        <div class="col-xs-12">          <div class="input-group input-group-sm">            <label>min</label>            <span class="input-group-addon" id="basic-addon1">$</span>            <input type="text" id="min-price" />          </div>        </div>        <div class="col-xs-12">          <div class="input-group input-group-sm">            <label>max</label>            <span class="input-group-addon" id="basic-addon1">$</span>            <input type="text" id="max-price" />          </div>        </div>      </div>    </div>  </div>    <script>    $('#listing-price-selector').popover( {    html: true,    trigger: 'click',    placement: 'bottom',    template:  '<div class="popover price-range-pop" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>',    content: function() {      return $('#listing-price-content').html();  }      });    $("[data-toggle='popover']").on('shown.bs.popover', function(){    $("#listing-price-selector").next().find("#min-price").keyup(modprice);    $("#listing-price-selector").next().find("#max-price").keyup(modprice);  });    $("[data-toggle='popover']").on('hide.bs.popover', function(){    modprice();  });    function modprice(){    var mn = $("#listing-price-selector").next().find("#min-price").val();    var mx = $("#listing-price-selector").next().find("#max-price").val();    mn = (mn == "") ? 0 : mn;    mx = (mx == "") ? 0 : mx;    $("#pricebox").val(mn + " " + mx);    $("#listing-price-selector").text(mn + " " + mx);  }    </script>


Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -