php - Javascript/HTML 表单字段命名问题

标签 php javascript html forms field

考虑以下简单形式:

<form method="GET" action="handle.php">
  <input type="hidden" name="action" value="search">
</form>

表单提交由 Javascript (iui) 在 ajax 调用中执行。所有字段都从表单中正确收集。然后 Javascript 想要将 ajax 调用发送到“form.action”。

这是我的问题开始的地方。对象 form 是 HTMLFormElement 类型。表单的action 属性应该是字符串类型并且应该包含“handle.php”。经过几个小时的调试,我注意到 form.action 现在是 HTMLInputElement 类型。

我的问题: 这是正确的 Javascript 行为吗?我从来没有想过用表单属性的名称定义一个表单字段,这会发生。与此同时,我通过以不同方式命名我的领域来解决这个问题。

提前感谢您的任何建议...


找到了一种简单的方法来显示我的问题。首先是有问题的表格:

<form action="test.php">
    <input type="hidden" name="action" value="test">
    <input type="button" onclick="alert(this.form.action);">
</form>

正确的形式:

<form action="test.php">
    <input type="hidden" name="NOT_AN_ATTRIBUTE_NAME" value="test">
    <input type="button" onclick="alert(this.form.action);">
</form>

在第一个中,弹出窗口声明“[object HTMLInputElement]”,在第二个中:“http://localhost/test.php”。

最佳答案

您遇到的问题是因为表单在 JavaScript 中很特殊。它们的所有字段都可以作为属性访问,因此当您使用 this.form.action 时,它会获取 field 操作,而不是 HTML 属性 action="test. php".

尝试将 alert(this.form.action); 改为 alert(this.form.getAttribute('action'))

关于php - Javascript/HTML 表单字段命名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4615520/

相关文章:

php - 为什么是 "Max made me put this here"?

PHP:使用if语句从数组中取消设置

javascript - 将 Actionscript 转换为 HTML5

php - 需要 jquery 动画帮助

javascript - flashlike javascript框架或简单的html5解决方案

php - 使用 AJAX 将多个输入表单字段 POST 到 mySQL db

PHP 通知 : Array to string conversion in

javascript - 简单的文本切换,仅打开下一个 p

javascript - Angular 无法获取 javascript 屏幕键盘输入

javascript - 使用 Jquery 将跨度添加到数字