2016-03-20 15 views
2

私は周りを見回しましたが、これは以前に尋ねられているとは思われません。 JS:プロンプトで選択すると、選択オプションの値を変更しますか?

私はそうのように、選択ボックスを持っている:

<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で)数値を入力するようにユーザーに求めます。

<script> 
function change() { 
    if(value == "custom") { 
    value = prompt("Please enter a new number:", "60"); 
    } 
} 
</script> 

私はこれを行うための最善の方法は、昔ながらのjavascriptとは何か知りたいと思った - 私がしなければならない場合、私はjQueryのを使用します。

アイデア?例も素晴らしいでしょう。

答えて

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/

+0

これは完璧です!どうもありがとうございました!私の人生のためにJSを理解することはできません。私はJSのフォーマットよりもPHPを書くのが大好きです。 – Matthew

+0

スクリプトは値の代わりにIDに基づいてオプションを見つけることができます必要に応じて複数回変更しましたか? – Matthew

+1

はい。 oItem.options [oItem.selectedIndex] .valueで "value"を "id"に変更します。 –

1

onchangeイベントは、これを処理する適切な方法です。しかし、これは主にユーザーインターフェイス(UX)デザインの問題です。私はtypeahead入力を使用するビューのUXD点から

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

:プロンプトの方法でこれを行うには、parseFloatを使用するべきです。それは既知の回答を自動検索するだけでなく、ユーザーが自分の入力を入力できるようにします。これは標準的なHTMLではないので、あなた自身でこれを書くかjqueryを使う必要があります。しかし、ユーザー・インターフェース設計の観点から、プロンプトは吸います。

+0

おかげで、私はのファンは自分自身を促しないんだけど...と私は、ウェブサイトのフロントエンドに1を使用しないでしょう。これは私が計算時間を節約できる計算を実行するために使用している小さなツールです。従業員の数人を対象としています。プロンプトは私が考えることができる最も簡単なものです。私が夢中になりたいのであれば、私はポップアップモデルを作成して自分自身の入力を作成することができると思います。私はまた、このオプションが非常に頻繁に使用されることを疑う。 – Matthew

関連する問題