2012-04-15 88 views
1

简单的if/else在我身上转储.....它工作正常(从prev proj复制),做了一些 更改,现在什么也没有。简单的if/else形式检查(应该很简单)

我删除了所有,并写了一个简单的函数来检查空和没有,表单仍然会去下一页...这只是工作。

所以现在我做最简单的一个,所以......它仍然搞砸了,所以我错过了什么。 应该很简单。

我需要休息大声笑

继承人的代码。

HTML:

<form name="mainForm" action="formProc.php" method="get" id="mainForm" onSubmit="return allChecks();" > 


<input type="text" name="name" id="name"/> 

</form> 

JS:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript"> 

$(document).ready(function(){ 
    //formVars 
    var name = $('#name'); 

function allChecks(){ 
    if(name.val()==""){ 
     alert("lopan"); 
     return false; 
    } 

     if(name.val()===""){ 
     alert("lopan"); 
     return false; 
    } 

     if(name.val()== null){ 
     alert("lopan"); 
     return false; 
    } 
return false; 
} 

}); 
</script> 

正如你可以看到... ... IM基本上试图在窗体上强制 “假”,它 却还在继续到下一个页面。

因此更进一步。

我创建具有type =“按钮”的形式另一个按钮,声明它和好,这

var btn= $('#clearF'); 

btn.click(allChecks); 

那么这个作品......这样的IM丢失。

编辑*** 即时试图强制假/阻止进入下一页,因为,因为我正在向字段添加验证,我注意到它经历了下一个页面,无论值是否为真...经过一段时间的故障排除后,我决定明白为什么它会自己进入下一页......因此试图强制使用错误和失败,防止它进入下一页。

***结束编辑

任何提示/创意/点出一些愚蠢的事情即时通讯做....不要犹豫指出来的先进 感谢。

+0

在你的代码的第一部分(事情不起作用),你永远不会调用'allChecks'。你忘了像第二部分那样把它绑定起来吗? – m90 2012-04-15 11:05:30

+0

你好。如果你看看我上面提到的第一组html代码,向右滚动滚动条)我在窗体上调用它“onsubmit = return allChecks();” – somdow 2012-04-15 11:09:01

+0

是的,我刚看到这个,看@工程师的答案,这个应该可以解决你的问题(该函数没有在全局范围内定义) – m90 2012-04-15 11:10:13

回答

3

allChecks对于您的标记不可见。它在$(document).ready()处理程序里面。为了使“看得见”只是声明它是这样的:

window.allChecks=function(){ 
+0

你好。如果你看看我上面提到的第一组html代码,向右滚动滚动条)我在窗体上调用它“onsubmit = return allChecks();” ''标记' – somdow 2012-04-15 11:08:20

+0

'我的意思是'onSubmit =“返回allChecks();”'这一行。 'allChecks'函数不在全局范围内。当你试图调用'allChecks'提交事件时,它不会被调用,因为没有这样的函数。 – Engineer 2012-04-15 11:11:17

+0

好吧,我有点明白你在说什么(即时通讯是一个小白鼠,所以要耐心大声笑),但据我了解,.ready功能意味着当文档准备就绪时,使这些可用,和jquery对象意味着它使它可以在页面的任何地方反对说,在正常的JavaScript中做所有这些,并将其放在页面的底部,以确保它可以访问变量内容,从上到下..所以我不理解?或者这与你的“没有这样的功能”之间的误解?谢谢 – somdow 2012-04-15 11:20:00

0

,而不是onsubmit上的标记,为什么不创建一个处理程序使用jQuery?

$(document).ready(function(){ 

    $('#mainForm').on('submit',function(){ 
     //whatever you want to do on submit 
    }); 

}); 
0

你可以处理提交事件是这样的:

$(document).ready(function(){ 
    //formVars 

    var name = $('#name'); 

    $("#mainForm").submit(function() { 

    if (name.val() === "") { 
     alert("lopan"); 
     return false; 
    } 

    else { 
     return true; 
    } 
    }); 
}); 

http://jsfiddle.net/YMg9V/1/

0

有这样的事情是前一阵子,生产代码,突然改变了行为与提交。我现在做的是取代你的(相当普通的)代码。

<form name="mainForm" action="formProc.php" method="get" id="mainForm" > 
<input type="text" name="name" id="name"/> 
var btn= $('#clearF'); 
btn.click(allChecks); 

$(document).ready(function(){ 
    //formVars 
    var name = $('#name'); 

function allChecks(){ 
    if(name.val()==""){ 
     alert("lopan"); 
     return false; 
    }else{ 
     mainForm.submit(); 
    } 
return false; 
} 

}); 
</script>