JS:根据选择选项更改输入类型?

时间:2016-03-22 07:28:04

标签: javascript

我有一个允许输入文字的输入框(类型="文字"),旁边有一个带2个选项的选择框。选择框的第一个选项是"地址" (默认标记为选中),第二个是"距离"。虽然第一个选项要求输入类型为文本,但第二个选项只需要数字......

我想这样做,以便当用户点击"距离"作为一个选项,它会改变它旁边输入框的输入类型,输入=" number"。

<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>

我已经用Google搜索了,我似乎无法找到这个...我之前在这里问了几个关于输入和JS的问题,所以我知道我需要抓住它们按他们的身份证明。在那之后,我真的不知道。

的伪代码:

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';
    }
}

我是否沿着正确的道路前进?任何帮助表示赞赏。

我想远离jQuery。

2 个答案:

答案 0 :(得分:3)

  

selectBox.value就足够了。value将是字符串,它没有selected属性。 inputBox.type

也是如此

&#13;
&#13;
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);
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

尝试使用setAttribute

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