this.submit()的范围?

时间:2012-03-02 16:49:33

标签: php javascript html

我是html,javascript中的'this'范围的新手。

因此,在查看了一些SO帖子后,我发现“这个”实体的“范围”可能存在微妙的差异。

这是我遇到问题的地方:(编辑:我的帖子中的所有代码都位于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”锚点,因为它 CSS样式,是一个符合UI准则的按钮 在整个网站上都有效。

(我怀疑造型是一个“提交”按钮更可取 '会在没有javascript的情况下破解'吗?是的,我愿意。我有选择吗? 这里?不能。使用标准类型=“提交”不是我必须的选项 与之合作。)

虽然在视觉上很明显,页面会在重新加载时重新加载 我输入用户名,密码,然后单击“登录” - 我这样做 这位于php部分文件的顶部:

  var_dump($_POST);

且POST数组始终 为空

所以我的问题是关于上面代码中'this'的范围:

  onclick="this.submit();"

'this'是指我在其中的形式还是'a'锚 我叫“this.submit”?

请注意,我还尝试通过

执行表单的帖子
onclick="document.registerForm.submit();"

这给出了相同的结果 - '用户名'和'密码'字段 返回默认值但POST数组为空。

我需要做的就是在上面的表格中正确发布 'a'锚'登录'被点击 - 我想用“this.submit()”应该 工作 - 但POST数组始终为空。为什么呢?

1 个答案:

答案 0 :(得分:2)

您的表单字段缺少name属性。

<input type="text" name="user" value="Username">
<input type="text" name="pass" value="Password">

修改 此外,this指的是调用它的元素。在您的示例中,this会引用<a>标记。