2011-11-08 55 views
0

我試圖讓下面的JavaScript來自動更新下面的輸入字段(釐米),當用戶選擇那裏的高度和英寸。它應該自動計算釐米,並且不工作。JavaScript更新onchange

<script type=​"text/​javascript">​ 
updateHeights:function(type){ 
    if(type=='english'){ 
     var feet=parseInt($F('feet')); 
     var inches=parseInt($F('inches')); 
     var cm=((feet*12+inches)*2.54).round(); 
     $('centimeters').value=(feet?cm:''); 
     } 
     else 
     { 
     var cm=parseInt($F('centimeters'))||183; 
    if(cm>241||cm<91)cm=183; 
     var inches_total=(cm*0.3937).round(); 
     var feet=(inches_total/12).floor(); 
     var inches=inches_total%12; 
     $('feet').value=feet; 
     $('inches').value=inches; 
     $('centimeters').value=cm; 
    } 
} 
</script> 

<label>Height:</label> 
<select id="feet" name="add[feet]" onchange="Profile.updateHeights('english')"> 
    <option value="">—</option> 
    <option value="7">7</option> 
    <option value="6">6</option> 
    <option value="5">5</option> 
    <option value="4">4</option> 
    <option value="3">3</option> 
</select>ft.&nbsp;&nbsp; 
<select id="inches" name="add[inch]" onchange="Profile.updateHeights('english')"> 
    <option value="0">0</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    <option value="5">5</option> 
    <option value="6">6</option> 
    <option value="7">7</option> 
    <option value="8">8</option> 
    <option value="9">9</option> 
    <option value="10">10</option> 
    <option value="11">11</option> 
</select>in. or&nbsp; 
<input id="centimeters" type="text" name="centimeters" maxlength="3" value="178" onchange="Profile.updateHeights('metric')" style="width: 30px;" /> 
&nbsp;centimeters 
+0

您是否嘗試過調試?你的代碼是否被執行?什麼部分不起作用? – mrtsherman

+0

'$ F()'函數是在什麼地方定義的?我們可以假設你的'updateHeights:function()...'只是一個沒有被顯示的'Profile'對象的一個​​屬性嗎?因爲發佈的這個語法無效,所以我們無法分辨該對象的定義是否有問題。另外,爲什麼你硬編碼_my_身高(183釐米)? – nnnnnn

回答

1

假設這是剛剛從你的整個代碼的摘錄,檔案是一個合法的類名,$ F定義的地方,你就錯過了一些東西。

首先,您是通過ID選擇的,因此您需要在選擇器中包含#號。 其次,你試圖把一個對象解析爲一個整數。您需要使用parseInt($("#feet").val())來選擇輸入中包含的值。同樣,要設置一個值,您將要使用$("#centimeters").val(cm);