2016-03-22 11 views
1

Metin (type = "text") sağlayan 2 girişli bir seçim kutunun yanında bir giriş kutusu var. Seçim kutusunun ilk seçeneği "adres" (varsayılan olarak seçili olarak işaretlenir), ikincisi "mesafe" dir. İlk seçenek giriş tipinin metin olmasını gerektiriyorken, ikincisi sadece sayıları gerektirir ...JS: Seçme tipine göre giriş tipini değiştirir misiniz?

Kullanıcı, "Distance" seçeneğini bir seçenek olarak tıkladığında, girişin giriş tipini değiştirecek şekilde yapmak istiyorum. = "number" yazısının yanındaki kutuya. Etrafa google'dan

<div class="row collapse-col connect-input"> 
    <div class="col-1-2"> 
     <input name="send_address" id="send-address" type="text" placeholder="Address"> 
    </div> 
    <div class="col-1-2"> 
     <select name="send_dist_type" id="send-dist-type"> 
      <option value="address" selected>Address (Default)</option> 
      <option value="distance">Distance (km)</option> 
     </select> 
    </div> 
</div> 

, ben bu öğrenmek için görünmüyor olabilir ... Ben daha önce burada giriş ve JS ilgili birkaç soru sordunuz, ben de onları yakala gerektiğini biliyorum onların Kimlikler. Bundan sonra gerçekten bilmiyorum.

Sözde kod: Sağ yol boyunca

function addressChange() { 
    var inputBox = document.getElementById('send-address'); 
    var selectBox = document.getElementById('send-dist-type'); 
    if (selectBox.value.selected == 'distance') { 
     inputBox.type.change = 'number'; 
    } else { 
     inputBox.type.change = 'text'; 
    } 
} 

mıyım? Herhangi bir yardım takdir edilir.

jQuery'den uzak kalmak istiyorum.

cevap

3

selectBox.value yeterlidir .. value dize olacaktır ve selected olarak özelliği yok. Aynı yerine inputBox.type

function addressChange() { 
 
    var inputBox = document.getElementById('send-address'); 
 
    this.value == 'distance' ? inputBox.type = 'number' : inputBox.type = 'text'; 
 
} 
 

 
document.getElementById('send-dist-type').addEventListener('change', addressChange);
<div class="row"> 
 
    <div class="col-1"> 
 
    <div class="row collapse-col"> 
 
     <div class="col-1"> 
 
     <label for="send-address"><b>Address/Distance</b> 
 
     </label> 
 
     </div> 
 
     <div class="row collapse-col connect-input"> 
 
     <div class="col-1-2"> 
 
      <input name="send_address" id="send-address" type="text" placeholder="Address"> 
 
     </div> 
 
     <div class="col-1-2"> 
 
      <select name="send_dist_type" id="send-dist-type"> 
 
      <option value="address" selected>Address (Default)</option> 
 
      <option value="distance">Distance (km)</option> 
 
      </select> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    </div>

+0

için de geçerli Oldukça hızlı hem lol, adil olmak - ı Rayon ilk cevap biliyorum ama olur birini seçenekler aslında diğerinden daha iyi mi yoksa daha kişisel tercih mi? – Matthew

+0

Bu, tercih ettiğim cevaplarımın herhangi bir yolu gibi görünüyor, ama çabucak cevap verdiğiniz için teşekkürler @ gurvinder372! – Matthew

+0

(sadece lol kabul etmek için 3 dakika beklemek zorunda) – Matthew

2

deneyin setAttribute

function addressChange() { 
    var inputBox = document.getElementById('send-address'); 
    var selectBox = document.getElementById('send-dist-type'); 
    inputBox.setAttribute("type", selectBox.value); 
} 
İlgili konular