2013-07-19 29 views
0

我有一個樣本網站here不顯示數字大於72

在文件的底部,有一個標記爲'Potential Gen Ed TOC'的部分。

如果您打開標有合成的Accordion,則會在右側看到下拉菜單。

正如您所看到的,在這個JavaScript中,它基於是否激活複選框。然後,'潛在的Gen Ed TOC'將根據分配的值顯示一個數字。

$(function($) { 
    var sum = 0; 
    $('#CourseMenu :checkbox').click(function() { 
     sum = 0; 
     $('#CourseMenu :checkbox:checked').each(function(idx, elm) { 
      sum += parseInt(elm.value, 10); 
     }); 

     $('#total_potential').html(sum); 
    }); 
}); 

當你繼續在不同的課程中複選框時,會顯示一筆款項。

我現在要做的是,消除JS中的複選框觸發器。我用下拉菜單替換了他們,說「信用 - 選擇信用」。

每當有人選擇一個值時,「Potential Gen Ed TOC」會根據該值緩慢增加。

我會假設我所要做的就是分配value =「任意數字」並且JavaScript將會在此基礎上提取。

在JavaScript(上述)中,我在計算從下拉菜單中拉取這些值時遇到了問題。正如你所看到的JS基於複選框。

一旦我能夠從下拉菜單中提取數值,我希望將這些數值累加起來,但不要顯示高於72的數字,無論選擇了多少總轉帳點數。

這有道理嗎?

編輯:下面是一些標記來理解我試圖從拉(下拉菜單)值...

  <fieldset name = Comunication> 
      <legend>Transfer Course Information</legend> 
      <label for="School Int.">School Int.</label> 
      <input name="School Int." type="text" size="6" maxlength="6" /> &nbsp; 

      <label for="ID">ID</label> 
      <input name="ID" type="text" id="ID" size="8" /> &nbsp; 

      <label for="Name">Name</label> 
      <input name="Name" type="text" id="Name" size="25" />&nbsp; 

      <label for="Grade">Grade</label> 
      <input name="Grade" type="text" id="Grade" size="2" />&nbsp; 
      <label for="COM1"></label> 

      <form id="form2" name="form2" method="post" action=""> 
      <label for="Credits">Credits</label> 
      <select name="Credits" id="Credits"> 
       <option value="0">Select Credit</option> 
       <option value="0.67">1 QtrCr.</option> 
       <option value="1.33">2 QtrCr.</option> 
       <option value="2.00">3 QtrCr.</option> 
       <option value="2.67">4 QtrCr.</option> 
       <option value="3.33">5 QtrCr.</option> 
       <option value="4.00">6 QtrCr.</option> 
       <option value="4.67">7 QtrCr.</option> 
       <option value="5.33">8 QrtCr.</option> 
       <option value="6.00">9 QtrCr.</option> 
       <option value="6.67">10 QtrCr.</option> 
       <option value="1">1 SemCr.</option> 
       <option value="2">2 SemCr. </option> 
       <option value="3">3 SemCr.</option> 
       <option value="4">4 SemCr.</option> 
       <option value="5">5 SemCr.</option> 
       <option value="6">6 SemCr.</option> 
       <option value="7">7 SemCr. </option> 
       <option value="8">8 SemCr.</option> 
       <option value="9">9 SemCr.</option> 
       <option value="10">10 SemCr.</option> 
      </select>  
      </form> 
      Transferrable 
      <input name="COM105" type="checkbox" id="COM1" /> 
+0

某些標記是有用的。 – SeinopSys

回答

1

以下是如何使用選擇輸入:

$(function($) { 
    $('#CourseMenu select').change(function() { 
     var sum = 0; 
     $('#CourseMenu select').each(function(idx, elm) { 
      sum += parseInt(elm.value, 10); 
     }); 

    $('#total_potential').html(Math.min(sum,72)); 
    }); 
}); 

重要提示

你必須與你的HTML表單標記一些嚴重的問題。您的一些元素中有重複的id,表示無效的標記,id屬性在頁面中必須是唯一的。還有一些輸入具有相同的名稱,這意味着只有一個值將與表單一起提交。您可以使用輸入名稱中的數組提交多個值。

+0

#Communication select會影響其餘的HTML值,因爲它們都是#CourseMenu。或者我必須改變他們所有的人? – webfrogs

+0

@webfrogs對不起,我以爲你只需要通信選項卡中的那些,更新爲使用表單中的所有選擇。還請閱讀我的說明,因爲您可能需要在頁面中更正一些問題。 –

+0

現在確實有效。我應該想到這一點。我們快到了。 – webfrogs

0

怎麼樣:

if (sum <= 72) { 
    $('#total_potential').html(sum); 
} else { 
    $('#total_potential').html("72"); 
} 
+2

認爲你的意思是'<=',這樣它至少會顯示'72'。可能想在那裏硬編碼的「else」,其他明智的你什麼也得不到。 – defaultNINJA

+0

這也不能幫助我從下拉菜單選項中提取值。例如,如果某人選擇了值** 3 SemCr **,那麼該值應該下降到** Potential Gen Ed TOC **,但數字不能超過72 ... – webfrogs

+0

@defaultNINJA是的,你說的沒錯。 –

6
$('#total_potential').html(Math.min(sum,72)); 

威爾顯示總和高達72然後只有72

+0

你的回答也是正確的......對於這一點數學。我把它插入koala_dev的答案,我們都很好。道具! – webfrogs