JQuery blur() メソッドを使用して「select」要素のオプションから値を取得していますが、何らかの理由で、選択した selectedIndex ではなく、常に selectedIndex = 0 の値を取得しています。
--> JSFiddle <-- なんらかの理由で、最初の行 (長さ) は正常に機能しますが、他の行はどれも機能しません。
任意のテキスト ボックスに数値を入力し (最初の「長さ」を除く)、隣接する選択ボックスから項目を選択し、選択ボックスから離れた場所をクリックします。
コードがすべての SELECT 要素で常に option=0 の値を選択していることがわかります。また、「data-hid」プロパティを数値として認識できません (textbox 要素の html を参照)。
誰か助けてくれませんか?私はこれで1日立ち往生しています。
** また、何らかの理由で、これは JQuery 1.7.2 でのみ機能し、1.9 リリースでは機能しません (「option:selected」コードが好きではありません。そのスニペットが最新のリリースにどのように準拠できるか知っている人はいますか?
$('select').blur(function() {
//Get the value of the option chosen
var unit = $(this + 'option:selected').val();
//If the selectedIndex is 0 then focus on the select and make the user chose a unit.
if ($(this).prop('selectedIndex') == 0) {
$(this).focus();
return;
} else {
//Remove the 'd' in front of the 'select' element ID and you will have the ID of the textbox
var txt = "#" + $(this).attr("id").substr(1);
//Get the numerical value of the textbox
var mval = parseFloat($(txt).val());
if ($(txt).attr('data-hid') == "OFF") {
var hid = mval / unit;
$(txt).attr('data-hid', hid);
alert("hid = " + hid + "\nmval = " + mval + "\nunit = " + unit);
}
else
{
var hid = $(txt).attr('data-hid');
var newtxt = hid * unit;
$(txt).val(newtxt);
}
}
main();
});