2012-04-15 84 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>