2015-11-13 133 views
-1

我有这样的脚本:JQuery的提交()不工作

<form action="" method="POST" id="regform"> 
    <paper-material id="general"> 
      <gold-email-input pw="mail" name="mail" label="Mail" auto-validate></gold-email-input> 
      <paper-input id="pw" name="pw" type="password" label="Password"></paper-input> 
      <paper-input id="pwrepeat" type="password" label="Repeat password"></paper-input> 

      <paper-button onClick="subform();" id="submitbutton" elevation="2" raised>Submit</paper-button> 
    </paper-material> 
</form> 

 

function subform(){ 
     console.log("call"); 
     $('#regform').submit(function(e){ 
      console.log("Data: " + $(this).serialize()); 
      e.preventDefault(); //no difference with or without this function    
     }); 
    } 

方法submit(function(e))不是由脚本调用。为什么?我想阻止提交和使用数据。这是从表单中分离数据的正确方法吗?

+0

您是否尝试过取出'e.preventDefault();'? – Haring10

+0

您正在阻止提交功能,而不是默认的表单操作 –

+1

您为什么要设置按钮上的事件处理程序?这没有意义 – epascarello

回答

1

如您的代码所示,函数可能调用,具体取决于您的JavaScript代码所在的位置。

一般而言,使用onClick不鼓励,因为它可能会导致讨厌的范围界定问题。在这一点上,html解析器通过onclick="subform();"达到您的输入,此功能必须注册到全局范围。这是而不是的情况下,如果您使用$(document).ready或者在页面底部有JavaScript。

因此,请检查您的控制台是否有错误,因为您应该看到console.log("call");或错误消息,而这会首先阻止执行您的功能。

此外,在onClick处理程序中,您只需为submit事件注册一个处理程序,那么您完全可以直接跳过它,并直接注册提交处理程序。

您的代码应该简单地看是这样的:

// this waits until your form is submitted 
$('#regform').submit(function(e){ 
    console.log("submit button was pressed"); 
    console.log("Data: " + $(this).serialize()); 
    // this prevents the the actual form submit, so you have to do 
    // some kind of ajax call, to get the data to the server 
    e.preventDefault();    
}); 
+0

谢谢,这是工作,但我必须注册提交按钮通过'$(“#regform”)提交表单。submit()' –

+0

@SeseSchneider我不熟悉聚合物 - 在纯html中,默认操作的按钮是提交动作,但这可能不适用于聚合物。 – Christoph

-2

尝试指定您的提交按钮的输入类型。

<input type="submit" class="paper-button" onClick="subform();" id="submitbutton" elevation="2" raised>Submit</paper-button> 

另外,preventdefault将阻止提交。尝试删除它。

编辑:

克里斯托弗指出,图书馆正在被使用,因此选择一个是行不通的。相反,请删除preventdefault。

+0

正在使用聚合物库而不是HTML语言如果你不熟悉它,请查看:https ://www.polymer-project.org/ –

+0

我想阻止表单提交使用Ajax,但我必须使用'表格' –

+0

难题。如果你不使用标准表单提交按钮类型,你不需要preventDefault 。您正在脚本中定义提交功能,因此防止默认很可能会阻止按钮点击注册,而不是您预期的默认表单提交。 – Korgrue