将jQuery创建的文本输入设置为隐藏的输入值而不覆盖所有其他属性?

时间:2011-08-06 19:05:18

标签: javascript jquery html codeigniter input

基本上由于Codeigniter的Form_Helper库的 MAJOR 限制,您无法保留未使用CI表单帮助程序创建的输入元素的值。

因为我的表单需要带有时间格式(HH:MM:SS)的特殊格式的文本输入,所以我不得不使用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 :(得分:0)

您的示例中的

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)