HTML-переменная, вызывающая ошибку в CGI-файле - PullRequest
0 голосов
/ 22 ноября 2010

У меня проблема с печатью определенной переменной из моего файла CGI.Я получаю эту переменную totalCost с моей веб-страницы, а затем пытаюсь ее распечатать, но ничего не происходит.Все остальные переменные могут быть успешно получены с веб-страницы и распечатаны на другой веб-странице через мой cgi-файл, кроме этого ... Я проверил чувствительность к регистру, но это не помогло

Код в html...

<tr>  <td colspan=3 padding=2><b> Total =  $ </b> <input type= "text" id="totalCost" disabled= true name= "totalCost" size ="5" maxlength="5" value= 0.00 /> <td> <tr>

функция computeCost

<script type= "text/javascript">

function computeCost(){

var apples= document.getElementById("appleQty").value;
var oranges=document.getElementById("orangeQty").value;
var bananas=document.getElementById("bananaQty").value;

var totCostTemp=0.69*apples + 0.59*oranges + 0.39*bananas;

document.getElementById("totalCost").value= totCostTemp; 

}
</script>

В файле cgi, который я пишу с использованием Perl, я получаю свою переменную следующим образом:

my ($appleQty, $orangeQty, $bananaQty, $user, $cardType, $c) = (param("appleQty"), param("orangeQty"), param("bananaQty"), param("user"), param("cardType"), param("totalCost"));

затем попытайтесь распечатать таким способом ..

print header;
print start_html("Receipt"),
print h3("Fruit Store: Order Summary"),
table({-border => 2} ,caption("Your Receipt"), 
Tr([th("Name:").td($user),th("Payment Method:").td($cardType),th("Fruit Type").td("Quantity"), th("Apple").td($appleQty), th("Oranges").td($orangeQty), th("Bananas").td($bananaQty), th("Total Cost:").td($c)]));
print end_html;

Обратите внимание ... все переменные, кроме totalCost, печатаются правильно.totalCost вообще не печатается на моей результирующей веб-странице ... Я думаю, что это связано с тем, что я выполнил некоторые вычисления и, возможно, не сохранил их должным образом в id.Но я не знаю, как решить эту проблему ..

спасибо за совет!

Ответы [ 2 ]

2 голосов
/ 22 ноября 2010

Отключенные поля не публикуются. Поэтому вам просто нужно изменить поле, чтобы оно было доступно только для чтения. Нравится:

<input type="text" id="totalCost" readonly="true" name="totalCost" size ="5" value="0.00" />

Если вам не нравится цвет поля только для чтения, вы можете использовать CSS для его изменения следующим образом:

<style>
    input[readonly=true] {
     color:silver;
    }
</style>

Или для лучшей совместимости с CSS:

<style>
    .disabled {
      color:silver;
    }
</style>

<input type="text" id="totalCost" readonly="true" name="totalCost" size ="5" value="0.00" class="disabled" />

Вы также можете использовать скрытые поля, но вам не нужно менять текущий код.

2 голосов
/ 22 ноября 2010

Если элемент <input> никогда не активирован, он не будет отправлен на сервер при публикации формы.

Если вы не хотите, чтобы пользователь мог обновлять поле,тогда не используйте обычный «текст» <input>.Поместите туда <span>, чтобы сохранить значение, и обновите вместо него включенное «скрытое» <input>.

function computeCost(){

  var apples= document.getElementById("appleQty").value;
  var oranges=document.getElementById("orangeQty").value;
  var bananas=document.getElementById("bananaQty").value;

  var totCostTemp=0.69*apples + 0.59*oranges + 0.39*bananas;

  document.getElementById("totalCost").value= totCostTemp;
  document.getElementById('totalCostView').innerHTML = '$' + totCostTemp;

}

, и страница будет выглядеть следующим образом:

<td>
  <span id='totalCostView'>$0.00</span>
  <input type='hidden' id='totalCost' name='totalCost' value='0.00'>
</td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...