2011-01-06 56 views
1

我正在为用户添加各种输入字段以及添加到类别和子类别的文本区域的表单构建器界面。捕获包含无文章文本字段值的表单中的所有HTML

我已经制定出了Javascript(JQuery)来生成用户填写的嵌套类别和输入字段。

我需要捕获这个确切的生成的HTML,包括输入字段中的值,以便当他们回来编辑这个表单时,就像他们上次离开时​​一样。

我曾尝试使用$(“#myForm”)。html()并将其保存到保存到数据库的隐藏文本区域。这很好,除了.html()不会捕获输入字段中输入的内容。

后来,我需要解析出这个生成的HTML,过滤掉所有的添加/删除按钮,并最终得到嵌套的类别和表单字段值。

我的想法是绑定所有字段的keyup事件来更新自己的值字段,然后.html()可以捕获它呢?有一个更好的方法吗?

谢谢!

回答

2

如果你想通过解析您生成html的麻烦,重新生成的形式,它可能会更容易使用jQuery的内置形式的序列化功能来保存表单值:

http://api.jquery.com/serialize/

+0

感谢您的快速回答。我最初并没有考虑这种方法,因为我需要所有的表单字段以及HTML包装它们。 我想我可以抓住序列化的东西,抓住HTML,然后将它们重新加入到其他每个对象中 另外,顺便说一句 - 添加keyup处理程序来更新它的值属性似乎不起作用。 var sender = $(e.currentTarget); sender.attr(“value”,sender。VAL()); – Danomite 2011-01-06 15:24:12

+0

您可以使用`html` *和*`serialize`,从而为您节省您提到的方法的麻烦(绑定到所有表单字段的keyup事件...)。 – Emmett 2011-01-06 15:26:38

0

难道你不能将这些存储到数组的内容中,并将其存储在数据库中,然后将指针存储在Cookie,Session中或在用户登录时返回它?

您可以填充使用上述方法生成的HTML,但是您必须迭代字段并将当时输入的数据值写入要写回数据库的数组。

+0

的Cookie不会在这种情况下工作。这是任何人都可以通过任何机器访问的CMS组件。抓取,这些作为一个数组也不是一个坏主意。我可以使用它作为Jquery.serialization()的替代方案,因为输入需要依次命名属性(field1,field2,field3等),因为它们获得了一个简单的接口,用于向表单构建器中注入新的输入。 – Danomite 2011-01-06 16:19:47

0

为什么要将表单的HTML存储在数据库中?
如果表单发生变化(新字段作为发布的一部分被添加/删除)会怎样?
而是使用jQuery.serialize存储字段值,然后根据存储的json字符串填充表单上的字段。

1

我不知道你是否在找这个。 我有类似的问题,以及一些研究之后,我发现这可以解决我的问题(不是太有效的,但它足以):

 $('#form input:text').each(
      function(){ 
       $(this).attr('value', $(this).val()); 
      }); 

     $('#form input:radio').each(
      function(){ 
       if($(this).is(':checked')) { 
        $(this).attr('checked', 'checked'); 
       } 
       else{ 
        $(this).removeAttr('checked'); 
       } 
      }); 
     // I only give sample for input text and input radio 
     var html = $("#form ").html(); 
     console.log (html); 
相关问题