我环顾四周,以前没有看到过这个问题。
我有一个选择框,如下所示:
<select onchange="change()">
<option value="" selected>Option 1</option>
<option value="30">Option 2</option>
<option value="90">Option 3</option>
</select>
我想添加另一个选项......
<option value="custom">Option 4</option>
...当选择(点击)时,会弹出一个警告框,要求用户输入一个数字(在30或90的情况下,不是可行的选项,如选项的值&#39; s)替换期权的价值。
<script>
function change() {
if(value == "custom") {
value = prompt("Please enter a new number:", "60");
}
}
</script>
我想知道最好的方法是使用普通的旧javascript - 我必须使用jQuery。
有什么想法吗?一个例子也很棒。
答案 0 :(得分:1)
您的commonjs
事件是处理此事件的合适方式。这主要是用户界面(UX)设计的问题。要以提示方式执行此操作,您应该使用onchange
:
parseFloat
从change() {
var value = prompt('You\'ve chosen Other. Please enter a value', '60');
if(value) {
value = parseFloat(value);
// apply it to your model
} else {
// apply NULL to your model
}
}
的角度来看,我会使用UXD
输入。它会自动显示已知的答案,但也允许用户输入自己的答案。这不是标准的html,所以你需要自己编写或使用jquery。但是从用户界面设计的角度来看,提示很糟糕。
答案 1 :(得分:1)
看看这段代码。我想这就是你要做的事情:
<强> HTML
<select id="optionvals" onclick="change()">
<option value="" selected>Option 1</option>
<option value="30">Option 2</option>
<option value="90">Option 3</option>
<option value="custom">Option 4</option>
</select>
<强> JS
function change() {
var oItem = document.getElementById('optionvals');
var value = oItem.options[oItem.selectedIndex].value;
if(value == "custom") {
alert("you've clicked b");
value = prompt("Please enter a new number:", "60");
oItem.options[oItem.selectedIndex].value = value;
console.log(oItem.options[oItem.selectedIndex].value)
}
}
这样做只会在选项中的选定值为custom
时提示您进行更改。然后,在选择自定义值后,它会将custom
选项元素的值重写为刚刚在提示中输入的值。我在分配新值后将其记录下来,以显示它正在运行。
这是一个小提琴:https://jsfiddle.net/ng7xvy05/