djB*_*jBo 5 html javascript php forms field
请考虑以下简单形式:
<form method="GET" action="handle.php">
<input type="hidden" name="action" value="search">
</form>
Run Code Online (Sandbox Code Playgroud)
表单提交由Javascript(iui)在ajax调用中执行.从表单中正确收集所有字段.然后Javascript想要将ajax调用发送到" form.action ".
这是我的问题开始的地方.对象表单的类型为HTMLFormElement.表单的action属性应该是string类型,并且应该包含"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>
Run Code Online (Sandbox Code Playgroud)
而形式是恰当的:
<form action="test.php">
<input type="hidden" name="NOT_AN_ATTRIBUTE_NAME" value="test">
<input type="button" onclick="alert(this.form.action);">
</form>
Run Code Online (Sandbox Code Playgroud)
在第一个中,弹出窗口中的"[object HTMLInputElement]",在第二个:"http://localhost/test.php"中.
您看到的问题是因为表单在 JavaScript 中很特殊。它们的所有字段都可以作为属性访问,因此当您使用 时this.form.action,它获取的是字段操作,而不是 HTML 属性action="test.php"。
尝试 alert(this.form.action);改为alert(this.form.getAttribute('action'))。
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |