Задать для ввода текста, созданного в jQuery, скрытое значение без переопределения всех других атрибутов? - PullRequest
0 голосов
/ 06 августа 2011

В основном из-за ограничения MAJOR библиотеки Form_Helper Codeigniter вы не можете сохранить значения входных элементов, не созданных с помощью помощника по форме в CI.

Поскольку моя форма требует специально отформатированный ввод текста в формате времени (ЧЧ: ММ: СС). Мне пришлось использовать jQuery для создания элемента ввода.Теперь у меня возникает проблема с тем, что если пользователь вводит что-то недопустимое и проверки не пройдены, что приводит к перезагрузке страницы, они теряют значение времени, которое они ввели ранее.

Поэтому, чтобы сделать обходной путь, я создал скрытыйвходные данные с помощью CI form_helper, который, к счастью, сохраняет введенные значения времени.

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

Это HTML-код для моего скрытого элемента

<input type="hidden" value="" name="timetemp0">

Может быть X их количество, например.timetemp0, timetemp1, timetemp2 и т. д.

Итак, все, что мне сейчас нужно, - это моя функция jQuery для копирования значения этого элемента IF .Поэтому, когда форма загружается в первый раз, очевидно, что в скрытом вводе не будет никаких значений.

Я пробовал этот код, но, похоже, он переопределяет форматирование, выполненное jQuery.

        //creates an input field of text type formatted with a value of "00:00:00"
         var input = $("<input>", 
            {
                name: 'time'+i,
                value: '00:00:00',
                maxlength: '8',
                size: '6',
                type: 'text'
            });

            //this variable recieves the value of the hidden input element
            var temptime = document.getElementsByName('timetemp'+i);


 //if the temptime value is different indicating that a value had been entered before validation failed then make the jQuery created text inputs value equal that.
            if (temptime[0].value != input.value)
            input.value = temptime[0].value;

    ..rest of function

Спасибо

1 Ответ

0 голосов
/ 07 августа 2011

input в вашем примере - это объект jQuery, потому что любой вызов $(...) возвращает объект jQuery.Тем не менее, вы пытаетесь сделать input.value..value - это свойство элементов DOM (базовое поле ввода), но не объекта jQuery.Чтобы установить значение input, используйте подходящую функцию jQuery:

input.val(temptime[0].value);

Однако, поскольку вы используете jQuery, вы также можете использовать:

var temptime = $("#timetemp" + i);

if (temptime[0].val() != input.val())

вместо:

var temptime = document.getElementsByName('timetemp'+i);

if (temptime[0].value != input.value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...