Javascript form.submit()失败并停止执行其余的Javascript代码

Javascript form.submit() fails and stops rest of javascript code from executing

本文关键字:Javascript 执行 代码 submit form 失败      更新时间:2023-09-26

我有一个使用HTML和javascript的基本网页,旨在运行一个简单的聊天程序。页面中我无法正常工作的一部分是在提交消息时清除表单的消息字段。当你提交消息时,信息会通过发布数据发送到当前页面iframe中的一个页面,但我似乎无法同时提交和清除一个特定的文本框。我已经设法完成了清除框的代码,但提交它会把一切都搞砸。我想先提交,因为如果我清除文本框然后提交,消息将为空,然而,每当我在javascript中使用form.submit()函数时,似乎都会出现错误,一旦它到达那一行,其他代码都不会执行。我试过在警报中返回form.submit()的值,它总是说undefined(也就是说,我是把命令放在警报中,还是先把它输出到变量中)。这是我的代码:

<html>
<script language="javascript">
    function cleartxt()
    {
        myform.text.value = "";
        myform.submit();
    }
</script>
<body bgcolor="#999999">
    <form name="myform" id="myform" action="chatcontent.php" method="post" target="chatwindow" onsubmit="cleartxt();">
        <table border="0">
            <tr><td><font color="#FFFFFF"><b>Name:</b></font></td>
            <td><input type="text" name="name" maxlength="20"></td></tr>
            <tr><td><font color="#FFFFFF"><b>Color:</b></font></td>
            <td><input type="text" name="color"></td></tr>
            <tr><td><font color="#FFFFFF"><b>Message:</b></font></td>
            <td><input type="text" name="text" size="100%" autofocus="autofocus"></td>
            <td><input type="submit" name="btnsubmit" value="Submit"></td></tr>
        </table>
    </form>
    <iframe width="100%" height="80%" name="chatwindow" src="/chatcontent.php">
</body>

这显示了清除文本框后正在使用的提交功能。在这个表单中,它只清除文本框,不做任何其他操作。如果我交换了这两行,它只会提交表单而不清除文本。

通过getElementById初始化myform并尝试,就像这个

var myform = document.getElementById('myform');

尝试

function cleartxt()
{
    myform.text.value = "";
}
<iframe width="100%" height="80%" name="chatwindow" onload="cleartxt()" src="/chatcontent.php"> 

给想要清除某个类的输入,例如"clear this"。然后使用这个脚本:

<script>
   var inputs = document.getElementsByClass('clear-this');
   for (var i = 0; i < inputs.length; i++ ) {
       inputs[i].value = '';
   }​​​​
</script>

代替:

function cleartxt()
{
    myform.text.value = "";
    myform.submit();
}

您可以保存该值,并将其放入一个隐藏字段,该字段将与您的表单一起提交:

function cleartxt()
{
    myform.text.txtHidField.value = myform.text.value;
    myform.text.value = ""; 
    myform.submit();
}

这是你的形式:

<input type=hidden id=txtHidField />

那么,您只需要切换出chatcontent.php期望获得值的字段。或者只需将隐藏字段命名为"text",并将他们键入的文本框设置为类似"txtType"的内容,您就不必更改它。