为什么此表单验证无效? 我是这样做的:
<form name="myForm" action="save-info.php" method="post" onsubmit="return(validu());">
我正在尝试向表单添加验证功能,但即使直接返回false也不起作用。表格仍然提交 有什么问题?
我需要为我的输入添加一些验证逻辑。但我似乎无法做到这一点。 js调试器(firefox)表示ReferenceError:validu未定义
请帮忙
答案 0 :(得分:3)
由于您已经在使用jQuery,因此您也可以使用submit()
method可用。
检查this fiddle:
$(document).ready(function () {
$('form').submit(function (e) {
e.preventDefault();
alert('vdsdsfsdf');
//validate and submit.
});
}
答案 1 :(得分:2)
为了能够从function
属性引用on*
,必须在全局范围内定义它。
目前在另一个validu()
内宣布function
,onsubmit
属性根本无法访问它。
使validu()
全局:
移除$(document).ready(function () { })
周围的function validu()
。
[旁注]
中选择元素时,它们非常有用.ready()
事件不仅仅适用于function
声明。当您需要从document
:function handleSubmit(event) { // ... } $(document).ready(function () { $('form[name="myForm"]').submit(handleSubmit); });
将onLoad
的JSFiddle选项更改为:{/ 1>},它将您的代码包装在另一个function
中:
No wrap - in <head>
No wrap - in <body>
或者,正如karthikr建议的那样,您也可以使用unobtrusive JavaScript而不是onsubmit
属性,因此事件绑定和function
可以在同一范围内。
$(document).ready(function () {
function validu() {
alert('vdsdsfsdf');
return false;
}
$('form[name="myForm"]').submit(validu); // <----
});
答案 2 :(得分:1)
函数validu()必须可以通过html代码访问。在这种情况下,它只能在jquery ready函数中访问。
不幸的是,不可能简单地将它放在jsfiddle中的ready函数之外以使其工作,因为jsfiddle本身将js代码放在窗口加载函数中。 所以你必须这样写,
<script>function validu()
{
alert('vdsdsfsdf');
return false;
}</script>
<form name="myForm" action="save-info.php" method="post" onsubmit="return(validu());">
<div class="container" style="width:700px; margin:0 auto;">
<fieldset>
.....