2014-12-19 104 views
0

我不是JS的專家,但我試圖讓一個函數評估我的第一個選擇字段中的值,然後將該值返回給隱藏的輸入領域。不工作,JS肯定搞砸了,請幫忙!隱藏輸入字段的行內Javascript運行不正確

/** Usually form leads to sheet/fields which use the data, 
    but for example just used # **/ 

<form action="#" method="get" name="iceform" id="iceform" onsubmit="iceform_submit()"> 
    <div class="icecream"> 

    <div class="flavorType"> 
     <select name="flavorType" class="flavor-type empty" id = "flavor-type"> 
     <option value="0" disabled selected>Flavor Type Desired</option> 
     <option value="2">Frozen Treats</option> 
     <option value="5">Soft Served</option> 
     </select> 
    </div> 

    <div class="flavor"> 
     <select name="flavorAmount" class="flavor empty" id='flavor-amount'> 
     <option value="0" disabled selected>flavor Amount Desired</option> 
     <option value="750">$750</option> 
     <option value="800">$800</option> 
     <option value="850">$850</option> 
     <option value="900">$900</option> 
     <option value="950">$950</option> 
     <option value="1000">$1000</option> 
     <option value="1250">$1250</option> 
     <option value="1500">$1500</option> 
     <option value="1750">$1750</option> 
     <option value="2000">$2000</option> 
     <option value="2250">$2250</option> 
     <option value="2500">$2500</option> 
     <option value="2750">$2750</option> 
     <option value="3000">$3000</option> 
     <option value="3250">$3250</option> 
     <option value="3500">$3500</option> 
     <option value="3750">$3750</option> 
     <option value="4000">$4000</option> 
     <option value="4250">$4250</option> 
     <option value="4500">$4500</option> 
     <option value="5000">$5000</option> 
     <option value="5500">$5500</option> 
     <option value="6000">$6000</option> 
     <option value="6500">$6500</option> 
     <option value="7000">$7000</option> 
     <option value="7500">$7500</option> 
     <option value="8000">$8000</option> 
     <option value="8500">$8500</option> 
     <option value="9000">$9000</option> 
     <option value="9500">$9500</option> 
     <option value="10000">$10000</option> 
     </select> 
    </div> 
    <br> 
    <!-- Upon submit call js function --> 
    <div class="form-button"> 
     <input type='submit' class="submit tp-button green big :hover.green" value="Continue"> 
    </div> 
    <input type="hidden" name="flavorTypeId" value=''> 
    </div> 

    <script type="text/javascript"> 
    /** Function Called to define/return newflavortype **/ 
    function CheckFlavorTypeID(flavor_amount, flavor_type) { 
    var newflavortype = flavor_type; 
    switch (parseInt(flavor_type, radix)) { 
    case 2: 
     /** Frozen Treats **/ 
     switch (parseInt(flavor_amount, radix)) { 
     case 750: 
     case 800: 
     case 850: 
     case 900: 
     case 950: 
     newflavortype = 10; 
     break; 
     case 1000: 
     case 1250: 
     case 1500: 
     case 1750: 
     case 2000: 
     case 2250: 
     case 2500: 
     case 2750: 
     case 3000: 
     case 3250: 
     case 3500: 
     case 3750: 
     case 4000: 
     case 4250: 
     case 4500: 
     newflavortype = 11; 
     break; 
     case 5000: 
     case 5500: 
     case 6000: 
     case 6500: 
     case 7000: 
     case 7500: 
     case 8000: 
     case 8500: 
     case 9000: 
     case 9500: 
     case 10000: 
     newflavortype = 12; 
     break; 
     default: 
     break; 
     } 
     break; 
    case 5: 
     /* Soft Served */ 
     switch (parseInt(flavor_amount, radix)) { 
     case 750: 
     case 800: 
     case 850: 
     case 900: 
     case 950: 
     newflavortype = 3; 
     break; 
     case 1000: 
     case 1250: 
     case 1500: 
     case 1750: 
     case 2000: 
     case 2250: 
     case 2500: 
     case 2750: 
     case 3000: 
     case 3250: 
     case 3500: 
     case 3750: 
     case 4000: 
     case 4250: 
     case 4500: 
     newflavortype = 6; 
     break; 
     case 5000: 
     case 5500: 
     case 6000: 
     case 6500: 
     case 7000: 
     case 7500: 
     case 8000: 
     case 8500: 
     case 9000: 
     case 9500: 
     case 10000: 
     newflavortype = 7; 
     break; 
     default: 
     break; 
     } 
     break; 
    default: newflavortype = 3; 
     break; 
    } 
    return newflavortype; 
    } 
    /** The function that submits the form and defines flavorTypeId - value (hidden) **/ 
    function iceform_submit() { 
     var iceform = document.getElementById('iceform'); 
     var flavorA = document.getElementById('flavor-amount').value; 
     var flavorT = document.getElementById('flavor-type').value; 
     iceform.flavorTypeId.value = CheckFlavorTypeID(flavorA, flavorT); 
     iceform.submit(); 
    } 
    </script> 
</form> 
+0

'在其他topic'你應該考慮到存儲陣列或其他數據結構中的代碼看起來象spaguetti代碼的所有'cases'。它很難閱讀。 – ncubica 2014-12-19 05:25:21

+0

這是一個好主意,雖然我不完全確定如何在js中創建數組,但我對jquery很熟悉。抱歉。 – Bakajuice 2014-12-19 05:43:09

回答

1

更換輸入提交至:

<input type='button' onclick="iceform_submit()" class="submit tp-button green big :hover.green" value="Continue"> 

,並使用這個腳本,並記住你沒有可變radix地方做聲明,所以我剛剛刪除了:如果你願意用那麼它聲明並分配一定的價值然後使用它,但我個人沒有看到它的任何用途。

<script type="text/javascript"> 
    /** Function Called to define/return newflavortype **/ 
    function CheckFlavorTypeID(flavor_amount, flavor_type) { 
    var newflavortype = flavor_type; 
    switch (parseInt(flavor_type)) { 
    case 2: 
     /** Frozen Treats **/ 
     switch (parseInt(flavor_amount)) { 
     case 750: 
     case 800: 
     case 850: 
     case 900: 
     case 950: 
     newflavortype = 10; 
     break; 
     case 1000: 
     case 1250: 
     case 1500: 
     case 1750: 
     case 2000: 
     case 2250: 
     case 2500: 
     case 2750: 
     case 3000: 
     case 3250: 
     case 3500: 
     case 3750: 
     case 4000: 
     case 4250: 
     case 4500: 
     newflavortype = 11; 
     break; 
     case 5000: 
     case 5500: 
     case 6000: 
     case 6500: 
     case 7000: 
     case 7500: 
     case 8000: 
     case 8500: 
     case 9000: 
     case 9500: 
     case 10000: 
     newflavortype = 12; 
     break; 
     default: 
     break; 
     } 
     break; 
    case 5: 
     /* Soft Served */ 
     switch (parseInt(flavor_amount)) { 
     case 750: 
     case 800: 
     case 850: 
     case 900: 
     case 950: 
     newflavortype = 3; 
     break; 
     case 1000: 
     case 1250: 
     case 1500: 
     case 1750: 
     case 2000: 
     case 2250: 
     case 2500: 
     case 2750: 
     case 3000: 
     case 3250: 
     case 3500: 
     case 3750: 
     case 4000: 
     case 4250: 
     case 4500: 
     newflavortype = 6; 
     break; 
     case 5000: 
     case 5500: 
     case 6000: 
     case 6500: 
     case 7000: 
     case 7500: 
     case 8000: 
     case 8500: 
     case 9000: 
     case 9500: 
     case 10000: 
     newflavortype = 7; 
     break; 
     default: 
     break; 
     } 
     break; 
    default: newflavortype = 3; 
     break; 
    } 
    return newflavortype; 
    } 
    /** The function that submits the form and defines flavorTypeId - value (hidden) **/ 
    function iceform_submit() { 
     var iceform = document.getElementById('iceform'); 
     var flavorA = document.getElementById('flavor-amount').value; 
     var flavorT = document.getElementById('flavor-type').value; 
     iceform.flavorTypeId.value = CheckFlavorTypeID(flavorA, flavorT); 
    // alert(iceform.flavorTypeId.value); 
     iceform.submit(); 
    } 
    </script> 
+0

我的英雄,非常感謝XD。我知道這不是問題,但無論如何,使這項工作與驗證 - 這是有限的提交 – Bakajuice 2014-12-19 04:42:04

+0

@Bakajuice我沒有得到you.please詳細說明。 – 2014-12-19 04:44:59

+0

對不起,對於必填字段(我認爲)的html5驗證只適用於輸入提交不輸入按鈕,將使用類似prevent_default的輸入提交工作在這種情況下。 – Bakajuice 2014-12-19 04:47:30

1

你的功能iceform_submit永遠不會被調用,因爲你有你的按鈕onsubmit屬性。它應該在表單標籤上(或者您應該在按鈕標籤上使用onClick)。它是被提交的表單,而不是按鈕!

所以你的窗體標籤應該看起來像這樣;

<form action="#" method="get" name="iceform" id="iceform" onsubmit="iceform_submit()"> 

..你應該從按鈕中刪除onsubmit,像這樣;

<input type='submit' class="submit tp-button green big :hover.green" value="Continue"> 

我選擇不要在你的代碼的其餘部分評論(因爲這是不是你的問題),我只想說,你的switch語句可以簡化很多。

希望這會有所幫助。

+0

不好:C,flavorTypeId仍然沒有保留任何值,我欣賞這個幫助--EDIT - 我改變了上面的代碼來反映你的答案。謝謝 – Bakajuice 2014-12-19 04:23:10