Отобразить текст с условиями в раскрывающемся списке

0

Я обновляю свой предыдущий вопрос:

Пользователь должен вводить суммы в текстовых полях: amt1, amt2, amt3. Если они выбирают вариант для оплаты значения "Я" "S", и им нужно объявление "авансового платежа" как "Да", тогда текстовое поле adv1 должно отобразите сумму amt1 + amt2 + amt 3 + $ 750. В любом другом случае значение в adv1 должно быть 0,00, и, конечно, текстовое поле totalAmt должно всегда содержать сумму всегда.

Я попробовал javascript, чтобы получить значения параметров onChange и попытаться оценить. Однако значения не передаются.

HTML

<table width="800" border="1" cellspacing="0" cellpadding="0">
   <tr>
        <th>Estimated Travel Cost</th>
        <th>AED</th>
        <td>
            <input name="total" type="text" id "totalAmt"value="" readonly="true" style="text-align:center"/>
        </td>
  </tr>
  <tr>
      <th>Amount (AED)</th>
      <th>Arranged By</th>
  </tr>
  <tr>
      <td>Arrival (incl Taxes)</td>
      <td>
        <input name="amt1" id="amt1" type="text" value="0" style="text-align:center"/>
      </td>
      <td>
            <select name = "drop1" id = "str" onChange="updateTextVal()">
            <option value="S">Self</option>
            <option value="C">Company</option>
        </select>
        </td>
  </tr>
  <tr>
       <td>Local Travel</td>
       <td>
        <input name="amt2" type="text" value="" style="text-align:center"/>
       </td>
        <td>
             <select name="drop2">
             <option>Self</option>
             <option>Company</option>
             </select>
      </td>
  </tr>
  <tr>
       <td>Accomodation</td>
       <td>
        <input name="amt3" type="text" value="" style="text-align:center"/>
      </td>
      <td>
        <select name="drop3">
            <option>Self</option>
            <option>Company</option>
            </select>
     </td>
  </tr>
       <td>Estimated Total Cost</td>
       <td>
        <input name="amt6" type="text" value="" style="text-align:center" />
        </td>
        <td>
                <select name="drop6">
                <option>Self</option>
                <option>Company</option>
                </select>
        </td>
    </tr>
    <tr>
        <td>Advance Required</td>
        <td>
                <select name="advReq" id="ad">
        <option value="n">No</option>
                    <option value="y">Yes</option>     
        </select>
    </td>
    <td>
        <input name="adv1" type="text" id="adv1"  value="0" readonly="readonly" style="text-align:center"/>
    </td>
  </tr>

</table>

JavaScript

<script>

 function updateText() {
  var str = this.value;
  var $vel = parseInt(document.getElementById("amt1"));
  var $el = document.getElementById("adv1");
  var val = document.getElementById('ad').value;
  var $eval = document.getElementById('str').value;

    if(val == 'y'){ 
        if($eval == 's'){        
             $el.value = "750" + $vel;
         } else {
             $el.value = "0";
        }
    }
 }
</script>
  • 1
    Ваш вопрос на самом деле не вопрос, и если это где, это не имеет смысла? Что именно вы пытаетесь сделать именно!
  • 0
    У меня есть текстовое поле «adv1» и 2 варианта. Если пользователь выбирает «Self» и «Yes», необходимо заранее. Он должен суммировать сумму, введенную в текстовом поле «amt1», и сумму по умолчанию 750 долларов. Результат должен отображаться в 'adv1'
Показать ещё 1 комментарий
Теги:

3 ответа

0
Лучший ответ

Html:

<table>
      <tr>
      <td><input name="amt1" id="txtAmt" type="text" value="" align="left"  style="text-align:center" /></td>
      <td><select name = "drop1" id="sc"><option value="S">Self</option><option value="C">Company</option></select></td>
      </tr>          
         <tr>
           <td>Advance Required</td>
           <td><select name="advReq" id="ad">
               <option value="y">Yes</option>
               <option value="n">No</option>
               </select>
           </td>
           <td><input id='re' name="adv1" type="text" readonly="readonly" value="" /></td>
       </tr>

   </table>

Javascript

   document.getElementById('txtAmt').onkeyup = function(){
    var txtV = parseInt(this.value);
    var re = document.getElementById('re');
    var ad = document.getElementById('ad').value;
    var sc = document.getElementById('sc').value;
    if(ad == 'y'){
        // Yes in Advance Required
        if(sc == 'S'){
            // Self
            re.value = 'Self: ' + (txtV + 750) + '$';
        }
        else{
            re.value = 'Company: ' + (txtV + 750) + '$';
        }
    }
    else{
        // No in Advance Required
        if(sc == 'S'){
            re.value = 'Self: ' + '0.00';
        }
        else{
            re.value = 'Company: ' + '0.00';
        }
    }
}

Вот демонстрация

  • 0
    Мне нужно выполнить еще одно условие, например, если пользователь хочет заплатить «Сам» или хочет заплатить «Компанией».
  • 0
    Я только что обновил свой ответ! Пожалуйста, попробуйте
Показать ещё 6 комментариев
0

Просто добавьте функцию onClick к каждому из элементов выбора, как onclick="calculateAdvance()" определяемый как

function calculateAdvance()
{
if(document.forms[0].drop1.getSelectedValue == 'S' && document.forms[0].advReq.getSelectedValue == 'y')
{
var sum = eval(document.forms[0].amt1.value) + 750;
document.forsm[0].amt1.value = sum;

}
}

и измените HTML на

<td><select name = "drop1" onchange="calculateAdvance()"><option value="S">Self</option><option value="C">Company</option></select></td>

а также

<select name="advReq" id="ad" onchange="calculateAdvance()">
  • 0
    @Nambi: Спасибо за редактирование. На самом деле пытался установить его в линию, но не смог найти теги. Теперь сослались на теги стиля, которые будут использоваться. Извиняюсь за неудобства.
0

Вы должны написать функцию, которая собирает значения amt1, drop1 и advReq и устанавливает соответствующее значение в adv1. Затем вызовите его, когда страница будет загружена ИЛИ клавиша будет выпущена в amt1 ИЛИ значение drop1/advReq будет изменено. Не забывайте, что значение в amt1 может быть пустым или не быть фактическим числом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню