2011-06-16 18 views
1

我寫了一個腳本,只能在表單有效時才運行。基本上,用戶從選項卡填寫表單,然後如果表單有效,腳本將運行並取消隱藏下一個選項卡並自動將用戶導航到該表單。這裏是腳本:Jquery .valid()方法導致窗體在加載時顯示突出顯示的字段

var $tabs = $('#tabs').tabs(); 
    if ($('#quoteform').valid() == true) { 
        $('#submitbutton').click(function() {     
         unhidetab(); 
         $tabs.tabs('select', 2); 
         return false;    
        }); 
       } 

腳本功能根據需要,但有一個問題。在頁面加載時,它會自動將這些字段突出顯示爲無效。有沒有辦法寫這個,以便它仍然可以運行,但是不會在頁面加載時自動將必填字段高亮顯示爲無效?謝謝。

+0

此腳本位於何處?他的背景是什麼? – VAShhh 2011-06-16 15:10:37

+0

它在MVC3應用程序中。不幸的是,我不得不刪除jquery-validate.min和jquery-unobtrusive-validate.min,因爲由於某些原因它們導致程序內部錯誤,我不知道爲什麼。現在我想我將不得不採用完全不同的方法。 – Nozoku 2011-06-16 16:28:03

+0

我想通了。問題在於我們引用的jquery腳本。 – Nozoku 2011-06-16 19:56:07

回答

1

我想你sholud綁定腳本提交按鈕,否則它時,它的推出(()我想上的document.ready)

$('#submitbutton').click(function (event) {     
    if ($('#quoteform').valid() === true) { 
     //submit the form or do what you want 
    }else{ 
     event.preventDefault();//avoid submitting the form 
    } 
}); 
0

你想要驗證字段只提交頁? 如果是的話,我想你需要改變你的腳本:

var $tabs = $('#tabs').tabs(); 

$('#submitbutton').click(function() {     
    if ($('#quoteform').valid() == true) { 
     unhidetab(); 
     $tabs.tabs('select', 2); 
     return false;    
    } 
}); 

//對不起,我的英語,我是巴西人。

+0

嘿帕特里克,我實際上嘗試移動if語句之前的點擊功能,但認爲它不工作。我認爲在我的程序中可能還有其他的東西會讓它變得糟糕,儘管你還說要移動它。讓我去檢查一些事情。謝謝回覆。 – Nozoku 2011-06-16 15:19:49

0
  1. 從jQuery的onLoad事件中刪除你的函數執行:$(文件)。就緒(函數(){...
  2. 招了新的功能validateMyForm(){...
  3. 激活功能,當用戶改變表單字段:
<input type="text" onkeyup="validateMyForm()" onblur"validateMyForm()"> 
+0

我沒有在document.ready函數中使用它。 – Nozoku 2011-06-16 15:18:41

+0

如果它沒有包含在**指定的函數中,那麼你能指定它在哪裏陳述嗎?它會在頁面加載期間運行 – WooDzu 2011-06-16 15:21:21

0

更新:有一個與我們引用jQuery腳本的問題。