2012-06-01 121 views
4

有没有办法从表单中的div元素获取值而不是使用输入?从div获取价值。

我知道这是一个愚蠢的问题,但我只是想知道它是否可能。像PHP DOM的东西?

或者有没有办法可以改变div的输入时,提交?

感谢,

+0

为什么没有隐藏的Fileds – zod

+0

只是为了学习的唯一目的。我想看看它是否可能,并从中吸取教训。 – Brian

回答

5

使用JavaScript,你可以把div的内容为(隐藏)输入您提交表单权利之前。

它将大约是这样的jQuery中:

$('#myForm').submit(function() { 
    $('#myHiddenInput').val($('#myDiv').html()); 
}); 

编辑:为什么你们在谈论AJAX?在这种情况下不需要使用AJAX!

+0

内部$('#myForm')。submit();'是没有必要的。只要函数不返回false或调用'e.preventDefault()',表单就会提交。如你所知,这将无限递归。 – paislee

+0

感谢您指出,我更新了我的代码。 –

0

使用jQuery发布div内的信息。很简单,只需要几行代码。

2

PHP代码是在服务器侧进行处理,所以有主要可以是客户端DOM的无PHP操纵。

使用JavaScript(用jQuery最简单恕我直言)你可以拉出来的信息DOM的,它包括在表单提交的附加字段。

在SO上有很多关于如何使用jQuery添加表单提交的问题,例如,

Safari/JQUery - Insert and Update Hidden Field On Page

0

您可以将JavaScript文件中使用Ajax调用。你需要做的就是调用div id,例如$(“#yourdiv”)。val(); 这会给你任何在div id中的值。 如果您提供更具体的示例并显示一些代码,我可能会更具体。 吉姆

+0

将.val工作为div或仅输入 – zod

+0

您不能在div上使用val(),因为它没有...值。 –

+0

删除此答案或者得到downvote – zod

0

有多种方式来archieve这一点。

隐藏字段

您可以创建隐藏的输入字段使用JavaScript填补这些上提交

阿贾克斯

例如使用jQuery的AJAX库序列化数据,并通过张贴AJAX

样式输入字段,以便它们看起来像你说一个股利布特

另一种选择是只使用输入字段为你使用到和他们的风格在某种程度上,他们不喜欢看投入了

让我知道如果你需要任何的例子这些。

3

这里是一个JavaScript解决方案没有jQuery

<script> 

    function prepareSubmit() { 
     var payload = document.getElementById("target").innerHTML; 
     document.getElementById("divContents").value = payload; 
     return true; 
    }​ 

</script> 

标记:

<form name="test"> 
    <div id="target">Payload</div> 
    <input type="hidden" id="divContents" name="divContents" /> 
    <input type="submit" onclick="return prepareSubmit()" value="submit" /> 
</form>​ 

的onclick功能之前提交事件运行。实际上,除非prepareSubmit返回true,否则表单不会提交。它将div内容插入到隐藏的输入中。我认为这是最简单的解决方案。确保脚本在表单之前加载。

+0

这也适用。谢谢。 – Brian

+0

将'prepareSubmit'放在窗体的'onsubmit'属性中不是更好吗?这样,它将处理所有类型的提交,例如按下表单元素中的回车。 – RustyTheBoyRobot