<script type="text/javascript">
function claim()
{
var c = confirm('You sure?');
if(c)
{
var password=prompt("Please mention pw","");
if (password!=null && password!="")
{
$.post("/claim/<?php echo $refnr; ?>", { partner_pwd: password },
function(data) {
alert(data);
if(data == '1')
{
return true;
}else{
return false;
}
});
}else{
return false;
}
}else{
return false;
}
}
</script>
在测试时,我进入请提及pw,在我输入并按OK之后它提交我的表单,而不是制作$ .post并且只提交我的表格如果数据=='1'(返回true)
在我的提交按钮中调用claim();
<input type="submit" name="submit" onclick="return claim()"; value="Submit" />
我尝试了警报调试,这是真的,就像我认为它在读取$ .post()时自动提交,我只希望它提交(通过返回true),如果数据为1。
答案 0 :(得分:1)
好吧,如果你把一个表格放在一个网站上,它的目标是提交表格。
http://api.jquery.com/submit/(向下滚动到以Example: If you'd like to prevent forms from being submitted unless a flag variable is set, try:
开头的最后一个示例)
如上面的链接所述,您应该更改表单的操作而不是某些页面,并执行action="javascript:claim()"
之类的操作。我认为这应该有效。
答案 1 :(得分:0)
您提交的onclick方法无法正常工作,因为无论如何都会提交表单。
例如,您应该在表单上的onsubmit();
事件上设置一个侦听器
或其他解决方案是将onsubmit
属性与您的javascript函数放在一起,并使用$('#form').submit();
函数从您的javascript提交表单。
答案 2 :(得分:0)
return true
请求中的return false
和$.post
除了退回该回调外什么都不做。它不会阻止表单提交。相反,请尝试完全阻止提交,然后在需要提交时触发它。
function claim() {
var c = confirm('You sure?');
if (!c) {
return false;
}
var password = prompt("Please mention pw", "");
if (password != null && password != "") {
$.post("/claim/<?php echo $refnr; ?>", {
partner_pwd: password
}, function(data) {
alert(data);
if (data == '1') {
$("#myform").submit();
}
});
}
return false;
}
请注意,无论有效性如何,我们总是 return false
。如果它有效,我们会直接触发表单的提交事件。