提交表单时是否可以使用action =“someFunction()”?

时间:2012-09-08 00:08:25

标签: javascript html ajax forms

从网上浏览,我没有看到很多设置函数等于函数的例子。但是,在我发现的少数几个论坛中,似乎很多人都说这种方法没有被广泛支持。

为了解释我的问题,我有一个表格我想在下面实现:

<table border="0" cellpadding="2" cellspacing="5">
                <th colspan="2" align="center">Check Out</th>
                <form name="checkOut" method="post" onSubmit="return(validate(this))" action="checkOut()"> 
                    <tr><td>Territory Number</td><td><input type="text" name="numberOut" tabindex="1" maxlength="3" size="3" /></td>
                    </tr><tr><td>First Name of Publisher</td><td><input type="text" onKeyUp="showHint(this.value)" name="fName" tabindex="2" maxlength="15"/></td>
                    </tr><tr><td>Last Name of Publisher</td><td><input type="text" onKeyUp="showHint_l(this.value)" name="lName" tabindex="3" maxlength="15" /></td>
                    </tr><tr><td><input type ="checkbox" name="specialC" tabindex="4" value="Yes"/> Special Campaign</td>
                    </tr><tr><td><input type="button" onClick="clearForm()" value="Reset" /></td><td><input type="submit" value="Check Out" /></td>
                </form>
                <p>Suggestions: <span id="txtHint"></span></p>
            </table>

更具体地说,checkOut()函数将使用ajax将表单值提交给php脚本,该脚本对数据库运行一些插入命令(我想使用ajax来学习这个技术,因为我很新基于Web的语言。因此,我想推迟使用jQuery一段时间)。截至目前,我没有这个功能的例子。

当然,这引出了一个问题,我可以简单地将该函数放入事件处理程序中:onSubmit =“checkOut()”?与此同时,我会离开action =“”?我假设整个函数将执行php脚本并完全按照我想要的方式执行,而无需单独的操作脚本。

任何反馈都将不胜感激。

4 个答案:

答案 0 :(得分:2)

您可以将其设为action="javascript:checkOut();",但将它放在onSubmit处理程序中几乎肯定会更好。

答案 1 :(得分:2)

使用<input type="button" />(或锚点,或button或其他)代替<input type="submit" />。在按钮的单击事件上,执行:

if(validate(document.getElementById("formId"))){
    // post the form w/ AJAX
    checkOut();
}

请记住,任何基于脚本的解决方案都应该具有非脚本选项。在这种情况下,它可以像在<input type="submit" />标记内放置noscript一样简单。

顺便提一下,您的标记无效。 form无法显示为table的直接子项。

答案 2 :(得分:0)

使用此代码是最好的方法

<input type="submit" id="submit_button">

和像这样的javascript代码

var submit = getElementById('submit_button');
submit.preventDefault();
submit.addEventListener('click', checkOut);

在第一行我们指定按钮,然后我们阻止执行默认操作,接下来我们为按钮点击时添加一个监听器

答案 3 :(得分:0)

我通常使用:

<input type="button" value="Submit" onclick="myFunction();">

然后我的函数将使用底部的本机提交函数,如果一切都检查出来。:

if (isSuccess)
    theForm.submit();
else
    return false;