0

为什么此表单验证不起作用?我这样做:

<form name="myForm" action="save-info.php" method="post" onsubmit="return(validu());">

http://jsfiddle.net/QrYmh/41/

我正在尝试向我的表单添加一个验证功能,但即使我直接返回 false,它也不起作用。表单仍然提交 有什么问题?

我需要为我的输入添加一些验证逻辑。但我似乎做不到。js 调试器(firefox)说 ReferenceError: validu is not defined

请帮忙

4

3 回答 3

3

Since you are already using jQuery, you might aswell use the submit() method available.

Check this fiddle:

$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        alert('vdsdsfsdf');
        //validate and submit.
    });
}
于 2013-10-15T16:13:22.180 回答
2

为了能够functionon*属性中引用 a,它必须在全局范围内定义。

当前在validu()another 内部声明function,该onsubmit属性根本无法访问它。

使validu()全局:

  1. 去除$(document).ready(function () { })周围function validu()

    [旁注].ready()事件对于function声明并不是真正必要的。当您需要从以下位置选择元素时,它们最有用document

    function handleSubmit(event) {
        // ...
    }
    
    $(document).ready(function () {
        $('form[name="myForm"]').submit(handleSubmit);
    });
    
  2. 将 JSFiddle 选项从onLoad将您的代码包装在另一个中的 JSFiddle 选项更改function为:

    • No wrap - in <head>
    • No wrap - in <body>

或者,正如 karthikr 建议的那样,您也可以使用不显眼的 JavaScript而不是onsubmit属性,因此事件绑定和function可以在同一范围内。

$(document).ready(function () {
    function validu() {
        alert('vdsdsfsdf');
        return false;
    }

    $('form[name="myForm"]').submit(validu); // <----
});

修订小提琴

于 2013-10-15T16:24:35.227 回答
1

html 代码必须可以访问函数 validu()。在这种情况下,它只能在 jquery 就绪函数中访问。

不幸的是,不可能简单地将其放在 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>
.....

http://jsfiddle.net/QrYmh/52/

于 2013-10-15T16:24:18.867 回答