使用“ID”而不是“名称”将html变量传递给PHP

时间:2010-07-13 10:08:16

标签: php html

我有以下HTML代码

<input type = "textarea" id="sentence1"> Here is my sentence </textarea>
<input type="hidden" name="sentence2" value="This is another sentence">

PHP:

$_POST['sentence1']  //shows nothing
$_POST['sentence2'] // works fine

我想获得sentence1的值但是我有这样一个分散的代码,对于textarea我不能将“id”更改为“name”,否则我将不得不在不同的文件中进行大量更改。

我必须将这两个句子都转移到PHP,所以请帮助我,我该怎么做?

6 个答案:

答案 0 :(得分:5)

没有输入type="textarea"。您无法将id属性用于name属性。这不是它将如何传输,也没有办法从纯HTML中改变它。表单<input>元素与namevalue属性一起传输。

请刷新您对HTML Form elements and attributes

的了解

答案 1 :(得分:3)

你的代码错了。你应该开始使用带有HTML验证的浏览器,它会抓住它。

<textarea name="sentence1" id="sentence1"> Here is my sentence </textarea> 

<input type="hidden" name="sentence2" value="This is another sentence" />

答案 2 :(得分:3)

更改

<input type = "textarea" id="sentence1"> Here is my sentence </textarea>

<textarea id="sentence1" name="sentence1"> Here is my sentence </textarea>

并且您的PHP可以使用。

答案 3 :(得分:0)

你不能(至少不使用纯HTML)。关于表单处理和处理状态的W3C建议

  

控件的“控件名称”由下式给出   它的名称属性。的范围   一个控件的名称属性   FORM元素是FORM元素。

  

表单数据集是一系列的   控制名称 /当前值对   由成功的控制构建

请参阅here

您可以使用Javascript动态地将name - 属性添加到所有表单元素,而不使用相应的属性。

答案 4 :(得分:0)

  

但是我有这样一个分散的代码,对于textarea我不能将“id”改为“name”,否则我将不得不在不同的文件中进行很多更改。   那可能就是你应该开始的地方。 (注意:input / textarea元素可以同时具有name和id属性。)

答案 5 :(得分:0)

我假设你已经纠正了<input type="textarea">错误。如果我正确理解您的需求,您知道该表单只传递name属性的值,而不是id,但您无法轻易更改。

我的建议是添加一个脚本,将name属性的值更改为id的值,或者复制整个属性,使其在name下都可用和id

<script>  
var inputs = document.getElementsByTagName('input');
for (var i=0; i<inputs.length; i++)  
    inputs[i].parentNode.appendChild(inputs[i].cloneNode(false));  
</script>

并在页面末尾添加它。为textareas做同样的事。