Не удается вставить JS-переменную в скрытое поле

0

Я обещаю... Я исследовал это более 24 часов. Я знаю, что это похоже (если не совсем то же самое), как некоторые другие вопросы. Я, очевидно, что-то пропустил. (Это будет длинное объяснение... Прошу прощения. Пожалуйста, не пугай его... Я уверен, что проблема с корнем/вопрос будет намного проще, чем все это выглядит! )

Конечным результатом является получение некоторых JS vars POSTed поверх моего PHP-скрипта процесса из HTML-формы. Простой, не так ли?

У меня есть полностью работающая форма, которая выполняет кучу вычислений с кучей полей ввода... это слишком сложно, чтобы публиковать здесь... не говоря уже о том, что я действительно не хочу смущать себя тем, что я уверен очень плохое кодирование!

В двух словах... У меня есть функция, которая в процессе запуска устанавливает различные JS-вары. Мне нужно, чтобы эти vars были вставлены в некоторые скрытые поля ввода, чтобы они переместились на мою обработку PHP вместе со всеми "нормальными" входами. Все эти вары представляют числа с плавающей запятой (если это делает любой diff)

Вот мое определение формы:

<form id="multiForm" action="App_post.php" method="POST" action="javascript:void(0)" id="appform" name="appform">

У меня есть "главная" функция, которая запускает все вычисления, в первую очередь, исходя из того, когда пользователь выбирает различные переключатели. Различные селекторы динамически обновляются в форме, когда пользователь выбирает кнопки (на самом деле пользователь выбирает различные варианты членских взносов в клуб и "дополнительные" предметы... кто-то обязательно спросит, что я делаю!)

$(function () {
...lots of JS code here along with the calculations that create the JS vars I need
}

(Я предполагаю, что эта функция вызывается через action = "javascript: void (0)")

Давайте сосредоточимся только на одном var прямо сейчас. JS var "regularfee" (вместе со всеми остальными, которые я хочу) существует после того, как все вычисления выполнены. Мне нужно, чтобы эти значения подключались к скрытым полям, чтобы они могли получать POSTED.

Вот пример скрытого поля:

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

Здесь я теряюсь. Я выполнил console.log(regularfee) в функции сразу после того, как все вычисления выполнены... он установлен на число с плавающей запятой 26.5 (что верно)

Вот несколько вещей, которые я пробовал до сих пор:

document.getElementById('regularfee').value=regularfee;
//  --OR--
document.getElementById('regularfee').value=regularfee.value;
document.getElementById("app").submit();

Независимо от того, что я пробовал, я получаю пустые значения POSTED до моего процесса PHP. Основываясь на других вопросах, которые я видел, метод скрытых входных полей, по-видимому, является одним из "принятых" способов сделать это. Я не зацикливаюсь на этом методе... просто ищу самый простой способ получить мои Vars POSTED! Что мне не хватает? Вся помощь очень ценится!

  • 0
    Вы получаете какие-либо ошибки JavaScript на консоли?
  • 0
    если вы открываете консоль и вводите document.getElementById ('normalfee'), что она печатает?
Показать ещё 3 комментария
Теги:
forms
input
hidden

3 ответа

0

Попробуйте обычную почту или используйте AJAX для SUbmit.

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

Этот метод получает все входные данные в форме ur, включая выбор и проверку.

  //multiForm form is your ID in ur form
 var data = $("#multiForm :input").serializeObject();

после использования ajax для сохранения в php-скрипте.

         $.ajax({
        type: "POST",
        url: "phpscript.php",
        data: data,
    success: function() {
         alert("Input Success!");
         }
        });

Как это поможет вам!

  • 0
    Простите за мое невежество ... но я пытаюсь следовать вашему ответу. Я не вижу, где это вообще относится к JS-переменной "normalfee" (число с плавающей запятой). Опять же ... возможно, просто мое невежество, но это, кажется, делает что-то еще.
  • 0
    Пожалуйста, оставьте ваш HTML-код, чтобы мы могли понять, в чем ваша проблема.
0

Технически этот синтаксис должен быть хорошим...

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

Предполагается, что переменная regularfee существует и имеет тип float. Или даже лучше использовать jQuery

$('#regularfee').val([your value here]);

Вопрос: почему у вас есть два действия в вашей форме? Как это работает?

<form id="multiForm" action="App_post.php" method="POST" action="javascript:void(0)" id="appform" name="appform">

Кроме того, для спокойствия, также выполните console.log, чтобы проверить значение скрытого поля после его установки

  • 0
    У меня есть 2 действия, потому что я не знаю, что я делаю !! LOL на основе предложения от пользователя 3075664 Я удаляю это второе действие. (Многое из того, что я сделал до сих пор, напрямую связано с плагиатом фрагментов и примеров, найденных в Интернете, и МНОГИЕ вопросы, рассмотренные здесь на SO! Я до этого не уловил этого.)
  • 0
    Глупый вопрос - каков синтаксис проверки скрытого поля val в консоли? Никогда этого не делал!
Показать ещё 5 комментариев
0

У вас есть два атрибута действия в вашей форме. Удалите второй для "javascript: void (0)". Он не вызывает функцию, которую вы считаете (анонимная функция, которую вы там видите, должна выполняться на dom ready).

  • 0
    У меня нет проблем с удалением, но это «способствует» моей проблеме или просто не нужно?
  • 0
    Не требуется. Q: когда устанавливается переменная regularfee ?
Показать ещё 7 комментариев

Ещё вопросы

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