2013-04-16 2 views
0

Я хотел бы показать другой вариант для разных вариантов.Расчет Javascript - если заявление

  • Если MenuNo1 (textinput) равен либо 1,2,3,4 or 5 - то значение menuPrice1 должно быть R70.00.
  • Если MenuNo1(textinput) равно либо 8,9,12 - тогда значение menuPrice1 должно быть R85.00.
  • Если MenuNo1 (textinput) равно 11 - тогда значение menuPrice1 должно быть R105.00.

Я пробовал делать это так: Однако ничего не отображается в поле MenuPrice1? В консоли также нет ошибок.

function calcMenu(form) { 
    var MenuPrice1 = (+form.MenuPrice1.value); 
    var MenuNo1 = (+form.MenuNo1.value); 

    if ([1,2,3,4,5].indexOf(+form.MenuNo1.value) != -1) { 
     MenuPrice1.value = "70"; 
    } 
    else if ([8,9,12].indexOf(+form.MenuNo1.value) != -1) { 
     MenuPrice1.value = "85"; 
    } 
    else if (+form.MenuNo1.value == 11) { 
     MenuPrice1.value = "105"; 
    } 
} 

HTML

<form id="quote" action="" method="get"> 
    <script type="text/javascript"> 
     // <![CDATA[ 
     jQuery(document).ready(function($) { 
      jQuery('#quote').change(function() { 
       doTotal(this) 
      }); 
     }); 
     // ]]> 
    </script> 
    <script type="text/javascript"> 
     // <![CDATA[ 
     jQuery(document).ready(function($) { 
      jQuery('#quote').change(function() { 
       calcMenu(this) 
      }); 
     }); 
     // ]]> 
    </script> 
    <table width="532" border="1" cellspacing="1" cellpadding="0.5"> 
     <tbody> 
      <tr> 
       <th scope="col" width="70"> 
       <div align="center"> 
        Date 
       </div></th> 
       <th scope="col" width="158"> 
       <div align="center"> 
        Amount of Delegates ½ Day Conference @ R 240 pp 
       </div></th> 
       <th width="112"> 
       <div align="center"> 
        Amount of Delegates Full Day Conference @ R 260 pp 
       </div></th> 
       <th width="112"> 
       <div align="center"> 
        Menu No 
       </div></th> 
       <th width="112"> 
       <div align="center"> 
        Price pp for Menu (1-7: R70, 8-10 R85, 11: R105, 12: R85) 
       </div></th> 
       <th width="134"> 
       <div align="center"> 
        Total for the day 
       </div></th> 
      </tr> 
      <tr> 
       <td> 
       <div align="center"> 
        <input type="text" name="date1" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="halfday1" size="15" maxlength="10" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="fullday1" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="MenuNo1" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="MenuPrice1" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="total1" size="15" /> 
       </div></td> 
      </tr> 
      <tr> 
       <td> 
       <div align="center"> 
        <input type="text" name="date2" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="halfday2" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="fullday2" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="MenuNo2" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="MenuPrice2" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="total2" size="15" /> 
       </div></td> 
      </tr> 
      <tr> 
       <td> 
       <div align="center"> 
        <input type="text" name="date3" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="halfday3" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="fullday3" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="MenuNo3" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="MenuPrice3" size="15" /> 
       </div></td> 
       <td> 
       <div align="center"> 
        <input type="text" name="total3" size="15" /> 
       </div></td> 
      </tr> 
      <tr> 
       <td></td> 
       <td></td> 
       <td></td> 
       <td></td> 
      </tr> 
     </tbody> 
    </table> 
</form> 
+0

Я не думаю, что функция calcMenu вызывается в вашем случае. Вы пробовали запустить его на чем-то, кроме события # quote ?.change()? – legendofawesomeness

+0

Нет события 'change', связанного с '

'. –

+0

@legendofawesomeness нет, я этого не пробовал. Первая функция (doTotal) работает таким образом, поэтому я просто скопировал, что там было использовано? – user1426583

ответ

3

Вы var MenuPrice1 = (+form.MenuPrice1.value); и делают MenuPrice1.value = позже.

Также существует более чистый способ сделать это, что упростило бы обслуживание в будущем.

Fiddle:http://jsfiddle.net/8q7Fh/3

var prices = [ 
    { 
     values: [1,2,3,4,5], 
     price: 'R70.00' 
    }, 
    { 
     values: [8,9,12], 
     price: 'R85.00' 
    }, 
    { 
     values: [11], 
     price: 'R105.00' 
    } 
]; 

function calcMenu(form) 
{ 
    var i, searchValue = parseInt(form.MenuNo1.value); 
    form.MenuPrice1.value = ''; 

    for (i in prices) 
    { 
     if ($.inArray(searchValue, prices[i].values) != -1) 
     { 
      form.MenuPrice1.value = prices[i].price; 
     } 
    } 
} 

Примечания: Вы в настоящее время отсутствуют цены, когда значения являются либо 6, 7 и 10. На данный момент я поставил его так, что он будет очистить значение в MenuPrice, если оно не может найти определенную цену. Что-то думать о!

+0

Вы - спасатель! Большое вам спасибо за вашу помощь. Я также добавлю значения для 6,7 и 10, большое спасибо. Это намного лучший способ сделать это :) – user1426583

+0

Мне бы хотелось, чтобы функции «doTotal» и «calcMenu» вычислялись при обновлении поля ввода (т. Е. 'onKeyup)? Должен ли я добавить эту строку в каждое из полей ввода, чтобы достичь этого: document.getElementById ("fullday1"). Onkeyup = dototal; document.getElementById ("halfday1"). Onkeyup = dototal; document.getElementById ("SingleRooms1"). Onkeyup = dototal; и т. Д.? или есть лучший способ? – user1426583

+0

Просто добавьте 'doTotal (this);' внутри 'jQuery ('# quote'). Change (function() {' .... –

Смежные вопросы