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


Submitting form issues: TypeError: this.form is null

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

在表的末尾,我有一个新的行,有一个"添加新的服务日志"按钮。

单击按钮隐藏该行,并显示带有表单和所需输入的新行,以及带有"保存"answers"取消"按钮的新行。

"Save"按钮调用一个Javascript函数,该函数检查键输入是否已填写。当点击"保存"时,我在控制台日志中看到

TypeError:这个。表单为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>

但是什么都没有发生,页面上和日志中都没有。

有人知道我做错了什么或问题是什么吗?

提前感谢!

编辑:

采纳Steven的建议后,我成功提交了表格。但是,没有正确地发送输入。我提交到同一页,以便表重新加载和用户可以看到他们的最新条目。在脚本的开头,我有这样的代码:

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>

表和表单控件留在表单内。

表单为空:

onclick='inputCheck(this.form.issue);'

替换为:

onclick='inputCheck();'

和编辑你的inputCheck方法:

function inputCheck() {
    console.log("checking...");
    if ($('textarea[name=issue]').val().length > 0){
        $('form#AddNewService').submit();
    } else {
        alert("You didn't describe the problem!");
    }
}