php - 提交表单问题: TypeError: this.表单为空

标签 php javascript jquery forms typeerror

我有一个 PHP 页面,它在表格中显示给定站点的所有服务日志。

在表格的末尾有一个新行,其中有一个“添加新服务日志”按钮。

单击该按钮会隐藏该行,并显示一个包含表单和所需输入的新行以及一个包含“保存”和“取消”按钮的新行。

“保存”按钮调用 JavaScript 函数来检查按键输入是否已填写。当点击“保存”时,我在控制台日志中看到

TypeError: this.form is null

这是我的代码:

 // SQL Query
 // Table data of queried results

 // Add a new service log   
 echo "<tr id='AddNew'>
       <td><input type=button value='Add New' onclick=\"$('#AddNew').hide();$('#AddNewHid').show();$('#SaveCancel').show();\"></td>
       <td colspan=12> &nbsp </td></tr>
       <form name='AddNewLog' method='POST' action='servicelook.php' id='AddNewService'>  
       <tr style='display: none;' id='AddNewHid'>
       <td><input type='text' value='$lastID' name='ticketid' size=10></td>
       <td><input type='text' value='$siteID' name='SiteID' size=4></td>
       <td><input type='text' value='$siteName' name='SiteName' size=20></td>
       <td><input type='text' value='$userid' name='takenBy' size=4></td>
       <td><input type='text' value='$now' name='callTime' size=20></td>
       <td><input type='text' value='' name='caller' size=20></td>
       <td><input type='text' value='' name='callPhone' size=14></td>
       <td><textarea name='issue' value = '' rows=3 cols=10></textarea></td>
       <td><textarea name='fix' value = '' rows=3 cols=10></textarea></td>
       <td><input type='text' value='$userid' name='solvedBy' size=4></td>
       <td><input type='text' value='$now' name='solvedTime' size=20></td>
       <td style='min-width:100px;max-width:100px;'><input type='checkbox' name='fup' value='fup'>Follow Up</td></tr>
       <input type='hidden' value='Yes' name='AddNew'>
       <input type='hidden' value='$userid' name='userid'>
       <input type='hidden' value='$session' name='session'>
       <input type='hidden' value='$siteid' name='siteid'>
       <tr  style='display: none;' id='SaveCancel'>
       <td colspan=2>
       <input name='save' type='button' onclick='inputCheck(this.form.issue);' value='Save'> &nbsp 
       <input type='button' value='Cancel' onclick=\"$('#AddNew').show();$('#AddNewHid').hide();$('#SaveCancel').hide();\"></td>
       <td colspan=11> &nbsp </td>
       </tr></form>";
 echo "</table>";

我的 inputCheck 函数如下所示:

<script type="text/javascript">
function inputCheck(areaName) 
{
console.log("checking...");
if (areaName.value.length > 0)
{
    $('form#AddNewService').submit();
} 
else
{
    alert("You didn't describe the problem!");
}
} // end noteCheck function
</script>

我尝试将提交按钮更改为:

<input type=submit value=Save>

但没有任何反应,页面上或日志中没有任何内容。

有人知道我做错了什么或者问题出在哪里吗?

提前致谢!

编辑:

根据史蒂文的建议,我成功提交了表单。 但是,输入未正确发送。我正在提交到同一页面,以便表重新加载,并且用户可以看到他们的最新条目。在脚本的开头我有这样的内容:

if($AddNew == 'Yes')
 {
     echo "YES...Adding New";
     echo $ticketid .$SiteID. $SiteName. $takenBy. $callTime. $caller. $callPhone. $issue. $fix. $solvedBy. $solvedTime;

             // Start SQL Query
      }

输入返回 null。我设置输入的方式有问题吗?

最佳答案

这里的一般策略是使保存按钮成为提交按钮,然后将验证放在表单的提交处理程序上,并在验证失败时取消提交,例如

<form onsubmit="return inputCheck(this.issue);" ...>

如果验证失败,则从 inputCheck 函数返回 false

您的问题可能是因为您的表单位于不可能的位置,因此它被移动到表格之外,即您有:

<table>
  <form>
    ...
  </form>
</table>

浏览器将其“更正”为:

<table>
    ...
</table>
<form>
</form>

现在表单位于表格外部,但控件仍在表格内部。因此将标记更改为:

<form>
  <table>
    ...
  </table>
</form>

因此表和表单控件保留在表单内。

关于php - 提交表单问题: TypeError: this.表单为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16824785/

相关文章:

javascript - 在窗口调整大小之前,ChartJS 不会在 Bootstrap 选项卡内绘制图形

javascript - JQuery - 如何处理可以通过箭头键更新的字段?

javascript - 我的 JavaScript 有什么问题吗?

javascript - jQuery $.post 不发送数据

php - CURL解析PHP

php - Laravel/流明 PSR-4 : If I put classes into subdirectories do I have to use different namespaces then?

javascript - 在鼠标悬停时更改背景颜色不透明度

javascript - 在不修改当前代码的情况下使用javascript上传多个文件

循环写入数组时超出 PHP 内存

php - Laravel 5.1 请求未知数据库类型枚举