我不熟悉 html、javascript 中的“this”范围。
因此,在查看一些 SO 帖子后,我发现“this”实体的“范围”可能存在细微差别。
这是我遇到问题的地方:(编辑:我帖子中的所有代码都位于文件 index.php 中)
<form enctype="multipart/form-data"
class="registerFormStyles" name="registerForm"
action="index.php" method="post">
<input type="text" value="Username">
<input type="text" value="Password">
<a href="#" name="newUserRegister" class="login-button-landing"
onclick="document.registerForm.submit();">Login</a>
<!-- onclick="this.submit();">Login</a> -->
</form>
此代码会导致重新加载带有上述表单的页面 -- 证据是输入的用户名和密码闪回 到他们的默认值=“用户名”和值=“密码”当我 单击“登录”按钮——“a” anchor ,因为它 CSS样式,是一个符合UI准则的按钮 在整个网站上都有效。
(我是否怀疑设计“提交”按钮的样式比其他人更可取? '没有javascript会中断'?是的,我愿意。我有选择吗 这里?不。使用标准 type="submit"不是我必须的选项 一起工作。)
尽管从视觉上很明显页面会在以下情况下重新加载 我输入用户名、密码,然后单击“登录”——我这样做 这在 php 部分的文件顶部:
var_dump($_POST);
并且 POST 数组总是空。
所以我的问题是关于上面代码中“this”的范围:
onclick="this.submit();"
“this”指的是形式还是指我在其中的“a” anchor 我在调用“this.submit”吗?
请注意,我还尝试通过以下方式完成表单的发布
onclick="document.registerForm.submit();"
这给出了相同的结果——“用户名”和“密码”字段 返回到它们的默认值,但 POST 数组为空。
我需要做的就是在 单击“a” anchor “登录”——我认为应该使用“this.submit()” 工作——但是 POST 数组总是空的。为什么?
最佳答案
您缺少 name
表单字段的属性。
<input type="text" name="user" value="Username">
<input type="text" name="pass" value="Password">
编辑
另外,this
指的是调用它的元素。在您的示例中,this
会引用 <a>
标签。
关于php - this.submit() 的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537130/