Застрял, пытаясь назначить JS Vars для скрытых полей

0

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

Я поделился гораздо большей формой с размером "образца", чтобы продемонстрировать, что мне нужно. Область, о которой идет речь, блокируется в очень узнаваемой области в функции calcFees.

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

ОБНОВЛЕНИЕ: Вот немного больше информации о том, что я использую.

//At this point the var regularfee is = 26.5
// (confirmed by console.log(regularfee);)
// I want to assign it to the hidden field with the id="regularfee"
// I have tried both of the following lines:
document.getElementById('regularfee').value=regularfee.value;
// console.log(document.getElementById('regularfee.value')); shows "null"
document.getElementById('regularfee').value=regularfee;
// console.log(document.getElementById('regularfee')); shows "[object HTMLDivElement]"

Что я делаю не так?

КОНЕЦ ОБНОВЛЕНИЯ *****************************

<!DOCTYPE html>
<html>
<head>

</head>
<body>
<form id="multiForm" action="post.php" method="POST" id="app" name="app">
<div id="page1" class="page" style="visibility:visible;">

Name: <input type="text" size="40" name="name1" >
<br><br>

<table border="1" cellpadding="5" width="50%">
<tbody>
<tr>
<td align="center" colspan="3"><strong>Membership Classification</strong></td>
</tr>
<tr><td width="1000">
<input name="paymethod" type="radio" class="pay" id="paypal" value="paypal" />I would like to use PayPal &#160;&#160;
<input name="paymethod" type="radio" class="pay" id="check" value="check" />I would like to pay by check
</td>
<td style="width:150px" align="right">Fee
</td>

<td style="width:150px">

</td></tr>

<tr>
<td><input name="memberclass" type="radio" class="membership" id="regular" value="regular"/>     Regular Membership</td>

<td align="right"><div id=regularfee></td>
<td><div align="right" id=regselectedfee></td>

</tr>
<tr><td colspan="2" align="right">Total </td>
<td><div align="right" id=total>

</td></tr></tbody>
</table>

<input type="hidden" name="regularfee" id="regularfee" value="">
<input type="hidden" name="regselectedfee" id="regselectedfee" value="">
<input type="hidden" name="total" id="total" value="">

</form>
<br>
<input type="button" id="C1" value="Continue" onClick="showLayer('page2')">
</td></tr>
</table>

</div>
<div id="page2" class="page">
<b>Page 2

<br><br>

<input type="button" id="B1" value="Go Back" onClick="showLayer('page1')">
<input type="submit" name="submit" value="Click to see Vars" />

</div>
</form>
</body>
</html>

<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script language="JavaScript">

var paypalselected
var checkselected
var regularfee
var memberfee1
var total

$(function () {

function clearForm()
{
     paypalselected = "0";
     checkselected = "0";
     regularfee = 0.0;
     memberfee1 = 0.0;
     total = 0.0;
     $("#regselectedfee").text(memberfee1.toFixed(2));
     $("#total").text(total.toFixed(2));

    // clear all radio buttons

    $("#regular").prop("checked", false );
}

function calcFees()
{
     total = (memberfee1);
     $("#total").text(total.toFixed(2));

// **********************************************************************************
// Here is where I want to plug in the 3 JS vars to the hidden fields
// regularfee, regselectedfee, total
// Here is what I've tried:
// vars are not getting plugged in
// If possible, I would like the vars to be plugged in dynamically 
// just as the form is updateddynamically when user selects buttons

document.getElementById('regularfee').value=regularfee;
document.getElementById('regselectedfee').value=regselectedfee;
document.getElementById('total').value=total;
// **********************************************************************************

}

function selectPayment()
{
    $(".pay").change(function () {
        clearForm();
        if ($("#paypal").prop("checked")) {

            regularfee = 26.50;
            $("#regularfee").text(regularfee.toFixed(2));
            paypalselected = "1";
            checkselected = "0";
         }
       if ($("#check").prop("checked")) {

            regularfee = 25.0;
            $("#regularfee").text(regularfee.toFixed(2));
            checkselected = "1";
            paypalselected = "0";
           }
      });
}

clearForm();

selectPayment();

//start of membership button selection

    $(".membership").change(function () {
     if (paypalselected == "1"){
        if ($("#regular").prop("checked")) {
            memberfee1 = 26.5;
            $("#regselectedfee").text(memberfee1.toFixed(2));
            calcFees();
            } 
         } //end of paypalselected test

      if (checkselected == "1"){
        if ($("#regular").prop("checked")) {
            memberfee1 = 25.0;
            $("#regselectedfee").text(memberfee1.toFixed(2));
            calcFees();
            } 
        } //end of checkselected test

      }); //end of $(".membership").change(function () {

});
//end of main function

var currentLayer = 'page1';
function showLayer(lyr){
    hideLayer(currentLayer);
document.getElementById(lyr).style.visibility = 'visible';
currentLayer = lyr;
window.scrollTo(0,0);
}

function hideLayer(lyr){
document.getElementById(lyr).style.visibility = 'hidden';
}
</script>

<style>
body{
font: 10pt sans-serif;
}
.page{
position: absolute;
top: 10;
left: 100;
visibility: hidden;
}

p.small
{
line-height: 5px;
}

p.smalltext12
{
font-size:12px
}
</style>
  • 0
    Скрипка здесь Как видно из выделения, HTML-код недействителен.
  • 1
    В чем проблема? Вы хотите скрытые поля? Не хотите скрытых полей? Не можете найти JS Vars? Я не понимаю Форма штуковина работает: 0 , 25 или 26.5 . Это хорошо?
Показать ещё 3 комментария
Теги:
forms

1 ответ

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

У вас есть 2 элемента #total. Только первому присваивается значение:

document.getElementById('total').value = total;

То же самое для остальных.

Идентификаторы должны быть уникальными, чтобы быть полезными.

  • 0
    Нет ... посмотри ближе. Первый "$ (" # total "). Text (total.toFixed (2));" является частью функции clearForm (). Чуть выше вы увидите, что total устанавливается на 0. Второе является частью calcFees (). Как я уже сказал ... у меня нет проблем с логикой или расчетами / отображением формы ... вопрос строго касается назначения переменных в скрытых полях.
  • 0
    @ user3066388 Э-э ... да, да. У вас есть два элемента с идентификатором total. Это недопустимый HTML, и, вероятно, поэтому ваш скрипт не работает; он будет присваивать значения только первому элементу. если вы хотите назначить группы элементов, используйте классы. Кроме того, ваши идентификаторы других элементов также дублируются, поэтому этот ответ должен решить ваши проблемы, если вы будете им следовать. Идентификаторы должны быть уникальными .
Показать ещё 1 комментарий

Ещё вопросы

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