根据单选按钮选择更改只读输入字段文本
Changing read only input field text according to radio button selection
场景是我想根据用户选择的单选按钮设置总价,当用户选择其中一个单选按钮时,价格会相应变化。
这里是 HTML:
<div class="input_box">
<h4 style="text-align: center;">إختر الباقة</h4>
<input type="radio" name="package" class="radio" id="pk1" value="70">
<label for="pk1">بالساعة</label>
<input type="radio" name="package" class="radio" id="pk2" value="200">
<label for="pk2">يوم</label>
<input type="radio" name="package" class="radio" id="pk3" value="2500">
<label for="pk3">شهر</label>
</div>
<div class="input_box">
<input type="number" placeholder="Total Value" name="price" class="name" id="output">
<i class="fa fa-money icon" aria-hidden="true"></i>
</div>
我尝试使用 javaScript 解决方案,例如:
<script>
document.getElementsByName("package").addEventListener("change", function(){
document.getElementById("output").innerHTML = this.value;// Show the value in output element
});
</script>
但似乎对我没有任何帮助,感谢您的帮助,谢谢 :)
首先,您的代码存在一些问题。如果您在浏览器控制台中查看,您会看到错误以及它们出现的特定行号 - 这始终是一个很好的起点。
首先,getElementsByName
returns 一个元素的集合,所以你需要遍历它并一个一个地附加事件监听器。例如,您不能像使用 jquery 那样只调用 addEventListener
一次应用它们。在此处查看该功能的文档:https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByName
其次,您试图通过设置其 innerHTML
来更新 output
元素,但该元素是一个数字输入。您需要更新其 value
属性。
这是一个将所有这些结合在一起的片段。
const radios = document.getElementsByName('package')
radios.forEach(function(radio) {
radio.addEventListener('change', function() {
document.getElementById("output").value = this.value;
})
})
<div class="input_box">
<h4 style="text-align: center;">إختر الباقة</h4>
<input type="radio" name="package" class="radio" id="pk1" value="70">
<label for="pk1">بالساعة</label>
<input type="radio" name="package" class="radio" id="pk2" value="200">
<label for="pk2">يوم</label>
<input type="radio" name="package" class="radio" id="pk3" value="2500">
<label for="pk3">شهر</label>
</div>
<div class="input_box">
<input type="number" placeholder="Total Value" name="price" class="name" id="output">
<i class="fa fa-money icon" aria-hidden="true"></i>
</div>
场景是我想根据用户选择的单选按钮设置总价,当用户选择其中一个单选按钮时,价格会相应变化。
这里是 HTML:
<div class="input_box">
<h4 style="text-align: center;">إختر الباقة</h4>
<input type="radio" name="package" class="radio" id="pk1" value="70">
<label for="pk1">بالساعة</label>
<input type="radio" name="package" class="radio" id="pk2" value="200">
<label for="pk2">يوم</label>
<input type="radio" name="package" class="radio" id="pk3" value="2500">
<label for="pk3">شهر</label>
</div>
<div class="input_box">
<input type="number" placeholder="Total Value" name="price" class="name" id="output">
<i class="fa fa-money icon" aria-hidden="true"></i>
</div>
我尝试使用 javaScript 解决方案,例如:
<script>
document.getElementsByName("package").addEventListener("change", function(){
document.getElementById("output").innerHTML = this.value;// Show the value in output element
});
</script>
但似乎对我没有任何帮助,感谢您的帮助,谢谢 :)
首先,您的代码存在一些问题。如果您在浏览器控制台中查看,您会看到错误以及它们出现的特定行号 - 这始终是一个很好的起点。
首先,getElementsByName
returns 一个元素的集合,所以你需要遍历它并一个一个地附加事件监听器。例如,您不能像使用 jquery 那样只调用 addEventListener
一次应用它们。在此处查看该功能的文档:https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByName
其次,您试图通过设置其 innerHTML
来更新 output
元素,但该元素是一个数字输入。您需要更新其 value
属性。
这是一个将所有这些结合在一起的片段。
const radios = document.getElementsByName('package')
radios.forEach(function(radio) {
radio.addEventListener('change', function() {
document.getElementById("output").value = this.value;
})
})
<div class="input_box">
<h4 style="text-align: center;">إختر الباقة</h4>
<input type="radio" name="package" class="radio" id="pk1" value="70">
<label for="pk1">بالساعة</label>
<input type="radio" name="package" class="radio" id="pk2" value="200">
<label for="pk2">يوم</label>
<input type="radio" name="package" class="radio" id="pk3" value="2500">
<label for="pk3">شهر</label>
</div>
<div class="input_box">
<input type="number" placeholder="Total Value" name="price" class="name" id="output">
<i class="fa fa-money icon" aria-hidden="true"></i>
</div>