2014-01-23 232 views
0

即使执行返回值,此表单也会继续提交,我的代码有什么问题?防止提交按钮表单Javascript

function formhash (form, password) 
{ 
    var pass1 = document.getElementById("password").value; 
    var pass2 = document.getElementById("cpassword").value; 
    var ok = true; 
    if (password != cpassword) { 
     //alert("Passwords Do not match"); 
     document.getElementById("password").style.borderColor = "#E34234"; 
     document.getElementById("cpassword").style.borderColor = "#E34234"; 
     ok = false; 
     return; 
    } 
    else 
    { 
     $.post('insert_home.php' 
      {PRIMAID:PRIMAID,EDITCAP:EDITCAP,EDITIMG:EDITIMG,EB_TITLE:EB_TITLE}).done(function(data){ 
      alert ("Book Successfully Updated"); 
      location.reload(); 
     }); 


     var p = document.createElement("input");  
     form.appendChild(p); 
     p.name="p"; 
     p.type="hidden"; 
     p.value=hex_sha512(password.value); 
     password.value=""; 
     form.submit(); 
    } 
} 

回答

2

您正致电form.submit();,删除它,它不会提交。 。

+0

然后我不会能够发布我所有的帖子变量 – user3196424

+0

我如何提交值而不使用form.submit()? – user3196424

+0

你的意思是使用AJAX? jQuery.ajax() –

1

您使用了错误的变量名“密码”和cpassword”你创造了pass1pass2所以你需要使用这些

改成这样:。

//You were using the WRONG variable names 
if (pass1 != pass2) { 
    //alert("Passwords Do not match"); 
    document.getElementById("password").style.borderColor = "#E34234"; 
    document.getElementById("cpassword").style.borderColor = "#E34234"; 
    ok = false; 
    return false; 
} 
+0

它仍然提交表格 – user3196424

+0

@ user3196424然后它要么没有达到回调,要么被调用两次。执行此操作:在'return false;'行之前将'console.log(“return”之前)行添加到代码中。在浏览器中打开开发者控制台(这将显示控制台日志记录)并运行代码。告诉我它打印出来的内容(如果有的话)不要使用警报弹出窗口。这可能会改变很多事情。始终使用console.log。 –

0

我没有看到在使用formhash()。

代码调用提交,而不是功能。

+0

需要发布的数据在提交之前将被散列,formhas函数将被其他函数调用sha512加密函数 – user3196424

0

如果提交表单,这是因为它是落在其他条件下。

添加大量的“console.log(”debug_X“)”其中“X”是每次都不同的数字。

你必须在console.log中添加pass1和pass2的值。

也许你是传递一个值而不是一个对象,或者也可能发生相反的情况。

我的直觉告诉我要检查密码对象和它们的值。 另外它告诉我,在发布评论给Don Rhummy之前,你没有检查pass1和pass2的内容。

请仔细检查,在发布您的下一个答案之前请先搜索更多。

你可以通过做“console.log(pass1);”并通过打开萤火虫和检查JavaScript控制台。

0

从Form中删除Action属性。