1

你如何在javascript中使用表单“提交”的值?

事实:
这是我使用 JavaScript 的 PHP 文档
,因为我需要一些我认为无法从服务器端脚本获得的时间因素:)

简化;我想要的是,当提交此表单或单击按钮时:

<form method="POST" action="test.php">
<input type="text" name="foo" size="30">
<input type="submit" value="Click me"> //it doesn't have to be submitted
<input type="button" action="some_action" value="Click me"> //an alternative solution
</form>

名为“foo”的文本输入的值显示在别处。

注意不必提交表单,我真正想要的是,当您按下按钮时,该值可以在其他地方使用

我应该改用 GET 吗?我可以只使用 $_POST 数组吗?我应该使用 AJAX(我完全没用)吗?我不知道在这种情况下该怎么办。

4

3 回答 3

1

$_POST您可以从服务器端的or数组中读取值$_REQUEST,并将其插入到任何您喜欢的输出中 - 如果您愿意,甚至可以在 javascript 中。例子:

<?php
$myValue = $_POST['foo'];
?>
<script type="text/javascript"><!--
function writeMyValue() { document.write('<?php echo $myValue; ?>'); }
// --></script>
于 2010-08-10T10:30:43.223 回答
1

由于您提到它并不完全取决于是否提交了表单,因此在不使用 POST / GETing 表单的情况下更容易捕获值。在正文部分编写好界面逻辑后,您需要在最后的页脚中编写以下代码:-

anypage.php:-

<form method="POST" action="test.php">
  <input type="text" name="foo" id="foo" size="30" />
  <input type="submit" onclick="return writeFoo('foo_placeholder', 'foo');" value="Click me" /> //it doesn't have to be submitted
  <input type="button" onclick="return writeFoo('foo_placeholder', 'foo');" action="some_action" value="Click me" /> //an alternative solution
</form>

writeFoo()上面的代码是您的代码,只是做了一些小的修改,包括在按钮/提交的“单击”事件上调用 JS 函数“ ”。这个函数有 2 个参数:-

  • arg- 它提到了要在其中打印值的 HTML 元素的目标占位符 ID。
  • source- 它提到了 HTML 元素的源 ID,从中获取/获取值。

rightpart.php:-

<div>
    <span id="foo_placeholder"></span>
</div>

上述 HTML 代码可用于任何面板,但必须在“anypage.php”页面显示给用户时包含在内。这是因为在调用“foo”元素时必须存在占位符元素。注意在“ writeFoo()”函数调用时间和该页面中使用相同的ID。

footer.php:-

<script type="text/javascript"><!--
function writeFoo(arg, source) {
    if(document.getElementById(arg) != null) {
        document.getElementById(arg).innerHTML = document.getElementById(source).value;
    }
}
// --></script>

并且这个页面应该包含上面包含“ writeFoo()”函数定义的JS代码。

编辑,至于@Latze:-
请参阅您可以将该“ ”页面包含在“ rightpart.php”页面的同一块中anypage.php或任何其他页面的任何块中(例如“ header.php”/“ footer.php”页面)。但主要逻辑是,当您查看特定页面时(在这种情况下,这意味着当您查看“ anypage.php”页面时)。

希望能帮助到你。

于 2010-08-10T10:47:51.010 回答
1

PHP 在服务器上运行。JavaScript 在浏览器上运行。这两种语言不相互交谈;它们甚至不会同时运行,更不用说在同一台机器上运行了。一旦用户提交表单,浏览器就会test.php从服务器发出请求,当前页面就永远消失了,脚本等等。

很难弄清楚你到底想做什么,所以我会为你提供一些一般性的提示:

  • JavaScript 可以拦截表单提交。您需要将onsubmit事件处理程序附加到<form>元素。分配给事件的函数可以做它需要的任何事情,然后返回true(并让提交继续)或返回false(并取消提交)。

  • JavaScript 几乎可以读取和写入任何页面元素。您需要使用所谓的 DOM 方法。

  • PHP 可以生成您需要的任何内容,包括 HTML 输入字段。

例子:

<?php

$foo_value = date('Y-m-d H:i:s');

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<script type="text/javascript"><!--
window.onload = function(){
    var documentForms = document.getElementsByTagName("form");
    for(var i=0, len=documentForms.length; i<len; i++){
        documentForms[i].onsubmit = function(e){
            var currentForm = e.target;
            var fooValue = currentForm.elements.foo.value;

            var p = document.createElement("p");
            p.appendChild(document.createTextNode("Aborted submission: " + fooValue));
            currentForm.appendChild(p);

            return false;
        };
    }
};
//--></script>
</head>
<body>

<form method="POST" action="test.php">
<input type="text" name="foo" value="<?php echo htmlspecialchars($foo_value) ?>" size="30">
<input type="submit" value="Tryk her">
</form>

</body>
</html>

更新

关于这一点的一点说明:

documentForms[i].onsubmit = function(e){
};

当您分配事件处理程序时,规范要求每当调用该函数时,它都会接收一个事件对象作为其第一个参数。该对象表示触发函数调用的事件,它可用于获取附加信息,例如 触发事件的原始 DOM 节点。在函数中如何调用它并不重要;我使用e是因为我从来不知道如何命名东西:)

于 2010-08-10T10:49:07.750 回答