как использовать обработчик формы jquery submit ()

0

У меня есть следующая форма:

<form action="" method="POST" name="form" id="form">
    <input name="year" type="text" id="year" placeholder="YYYY" size="4" maxlength="4">
    <input name="month" type="text" id="month" placeholder="MM" size="2" maxlength="2">
    <input name="day" type="text" id="day" placeholder="DD" size="2" maxlength="2">
    <input name="hour" type="text" id="hour" placeholder="HH" size="2" maxlength="2">
    <input name="minutes" type="text" id="minutes" placeholder="MM" size="2" maxlength="2">
    <input name="seconds" type="text" id="seconds" placeholder="SS" size="2" maxlength="2">
    <input name="sampleduration" type="text" id="sampleduration" size="4" maxlength="4">
    <input type="hidden" name="sample" id="sample">
    <input type="submit" name="submit" id="submit" value="Mark as reviewed">
</form>

Перед отправкой формы я хотел бы объединить некоторые поля формы и представить их в виде строки.

Строка должна выглядеть примерно так: "2014-12-03 23:43:12"

Строка представляет собой конкатенацию отдельных полей формы выше.

Я создал скрытое поле формы "sample", чтобы я мог привязать конкатенированную строку к скрытому полю формы до отправки формы.

После отправки формы php/mysql берет верх и вставляет форму в базу данных mysql.

Код jQuery, который у меня выглядит, выглядит следующим образом:

<script>
$( "#form" ).submit(function( event ) {
    $('#sample').val(year+'-'+month+'-'+day+' '+hour+':'+minutes+':'+seconds); });
</script>

Мой код jQuery не работает. Может ли кто-нибудь объяснить, почему?

  • 0
    Вы объявляете все эти переменные? year , month и т. д.
  • 0
    Не работает? Кабель подключен? .. просто шучу :) Вы получаете сообщение об ошибке, объясняющее, что некоторые значения не определены?
Показать ещё 2 комментария
Теги:
forms

4 ответа

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

В Javascript вы не можете получить доступ к переменным без их создания. jQuery - это всего лишь куча библиотек кода, написанных на Javascript, и это очень полезно.

То, что вы пытаетесь сделать, - это год доступа year, etc... Не указав Javscript, что эти переменные существуют.

Что вам нужно сделать, это var year; сначала сообщает Javascript, что эти переменные существуют, чтобы на них можно было ссылаться в вашем коде.

Здесь ссылка на образец кода, который делает то, что вы хотите. Посмотрите на комментарии в коде, чтобы понять, что делает каждая часть.

Проверьте JS Fiddle с функциональным примером кода. Все, что вам нужно сделать, это установить значение скрытой строки в final_output.

Надеюсь, поможет!

http://jsfiddle.net/hx2sH/

3

ваш код должен быть в блоке $ (document).ready, чтобы прослушивать ваше событие отправки - вот так:

<script type="text/javascript">
    $(document).ready(function () {
        $("#form").submit(function (event) {
            alert('submit is fired!');
        });
    });
</script>

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

3

Не используйте переменные как есть. т.е. год и т.д.

Оберните год, месяц и т.д. С помощью $('#'+idOfElement).val()

Также оберните свой код $(document).ready() если вы вызываете скрипт перед созданием DOM.

  • 0
    Это правильный ответ, я думаю;). Не только завернуть его в document.ready.
1

Следуя от Амита, ответьте на пример.

$(document).ready(function () {
    $("#form").submit(function (event) {
        var concatVals = $('#year').val()+'-'+$('#month').val()+'-'+$('#day').val()+'-'+$('#hour').val()+':'+$('#minutes').val()+':'+$('#seconds').val();
        $('#representativeSampleLocation').val(concatVals); 
    });
});

Ещё вопросы

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