2012-08-07 61 views
2

我试图使用jQuery从表单中获取数据,并使用此代码停止形式submiting获取数据:jQuery的停止提交并从形式

$form = $('form#signup') 
$form.submit(function(event){ 
    event.preventDefault(); 
    var $input=$('#signup :input') 
    console.log($input.username) 
    alert($input.username) 
}) 

但仍形式post S中的数据和警报框不appear.Also萤火虫带来了错误$ is not defined和Node.js的崩溃

(玉writen)形式:

html 
    head 
    script(src='javascripts/signupValidation.js') 
    script(src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js') 
    script(src='javascripts/validator.js') 
    body 
    form(id='signup',method='post',action='/signup') 
     label Firstname 
     input(type='text', name='firstname') 
     label Lastname 
     input(type='text', name='lastname') 
     label Username 
     input(type='text', name='username') 
     label Password 
     input(type='password', name='password') 
     label Password again 
     input(type='password', name='password2') 
     label Email 
     input(type='email', name='email') 

    input(type='submit',value='Sign up', onclick="") 
+2

NITPICK:使用分号!不使用它们是不好的做法,如果你想压缩你的代码,你将需要它们。 – epascarello 2012-08-07 16:38:03

回答

0

问题与您的代码

$input.username是无效的jQuery引用另一个元素[不与表单提交发行。

var usernameInput = $input.filter('[name="username"]'); 

看起来你并没有在document.ready上添加代码,所以你可能将它附加到任何东西上。将其更改为:

jQuery(function() { 
    $form = $('form#signup'); 
    $form.submit(function(event){ 
    }); 
} 

看起来您还包括jQuery代码之前的验证代码。我敢打赌,在浏览器中查看JavaScript控制台有一些不错的错误消息。

+0

dom准备好部分的好电话。 – 2012-08-07 16:38:08

+0

当jquery准备就绪时运行我的代码修复了提交问题,我仍然习惯了异步编码的思想 – gilbertbw 2012-08-07 16:55:40

0

您需要防止从表单与return false submiting:

$form.submit(function(event){ 

    var $input=$('#signup :input'); 
    console.log($input.username); 
    alert($input.username); 

// data = array of all the information collected from the input tags 
//data = $form.serizalize(); will also work 
data = $(this).serialize();  


    return false; 
}); 


data将与您所需要的信息的数组,我建议console.log(data)所以你可以看到它的所有结构,然后如你所愿,例如,你可以使用它:

if(data.something == anything){ 
    doThis(); 
} 

,我强烈建议在你的JavaScript语句

+1

'event.preventDefault();'将阻止表单提交。 – Lance 2012-08-07 16:33:49

+0

^多数民众赞成在我认为 – gilbertbw 2012-08-07 16:34:56

+0

是的,但有时会有更多的事情发生,'返回false'也将作为'事件。preventPropagation(); event.preventDefault(); '和另一个我现在不记得的函数,所以这样做更安全 – 2012-08-07 16:35:06

2

如果你的形式 - 的末尾添加一个;相关JS在文件signupValidation.js中,您需要将包含该文件的脚本调用移动到后面的jQuery包含

我可能会清理表单代码一点点,太:

$('form#signup').on('submit', function(event){ 
    event.preventDefault(); 
    var $input = $(this).find('[name=username]'); 
    console.log($input.val()); 
    alert($input.val()); 
}) 

您可能会感兴趣的看着.serialize(),太。

0

和其他人一样,我曾与代码运气是这样的:

$(document).ready(function(){ 
    // Prevent form submission 
    $("form").submit(function(event) { 
     event.preventDefault(); 
    }); 
}); 

为了防止表单提交。而且,现在,页面上有脚本背后的背景,并为HTML表单添加了诸如动画和“摆脱”效果之类的糖果涂层功能,这很常见。这些脚本可能会阻碍这种情况,因为它们可能有自己的javascript-fu用于提交。