2012-05-06 54 views
2

我是新來的jQuery,我已經按照有關編寫FN功能,我的第一個工作了幾個教程;但是當我添加第二個fn函數時,整個腳本停止工作。我會很感激任何反饋或solutuion我的問題。我已經包含了我的jQuery以及我正在使用的HTML表單。jQuery。 Fn.Function導致其他功能失敗?

在它的當前形式,它完全停下來的意思頁面清爽當用戶按下「提交」然而,由於加入「jQuery.fn.clear」它停止這樣做。

$(document).ready(function() { 

    // Length validation 
    jQuery.fn.validate = function (clength, value) { 
     if ($.trim($(this).val()).length < clength || $.trim($(this).val()) == value) { 
      $(this).val("You can't leave this blank!"); 
      return false; 
     } else { 
      return false; 
     } 
    }; 

    // Default value validation 
    jQuery.fn.clear = function() { 
     var value = $.trim($(this).val()); 
     if (value == "You can't leave this blank" || value == "Name" || value == "Email Address" 
     value == "Telephone") { 
      $(this).val(""); 
     } 
    }; 

    $(function() { 
     $(".submit-button").click(function() { 
      $("#send-name").validate(1, "Name"); 
      $("#send-mail").validate(6, "Email Address"); 

      $(".spinny").fadeTo(0, 1); 
      $(this).attr('value', 'Validating...'); 
      return false; 
     }); 
    }); 
}); 

<form method="POST" action=""> 
    <div class="left"> 
     <label for="name">What's your name?</label> 
     <input type="text" id="send-name" name="name" 
     id="name" class="watermark" size="40" value="Name" /> 
     <br /> 
     <label for="email">Your Email</label> 
     <input type="text" id="send-mail" name="email" size="40" 
     class="watermark" Value="Email Address" /> 
     <br /> 
     <label for="number">Your contact number</label> 
     <input type="text" id="send-number" name="number" 
     size="40" class="watermark" value="Telephone" /> 
     <br /> 
    </div> 
    <div class="right"> 
     <label for="message">How can I help?</label> 
     <textarea name="message" id="message" class="watermark" 
     cols="40" rows="10" title="Message"></textarea> 
     <br /> 
     <Br /> 
     <img src="_img/spinny.gif" class="spinny" /> 
     <input type="submit" class="submit-button" value="Submit" /> 
    </div> 
</form> 

回答

1

$(function() {之前忘記});。 你也忘了||value == "Telephone"

之前其實,只需刪除$(function() { - 沒有理由,開始一個新的文檔準備塊時,你已經有一個!

$(document).ready(function() { 

    // Length validation 
    $.fn.validate = function (clength, value) { 
     ... 
    }; 

    // Default value validation 
    $.fn.clear = function() { 
     ... 
    }; 


    $(".submit-button").click(function() { 
     ... 
    }); 
}); 

其他一些建議,以改善你的代碼:

  • $(this).attr('value'是壞的。總是使用.val()來獲取/設置元素的值。
  • 不要寫一次jQuery更多。如果你想你的代碼與$.noConflict()兼容,改變第一行是這樣的:jQuery(document).ready(function($){
+1

非常感謝!它現在正在工作,我已經做出了您所建議的更改,沒有看到缺少的操作員。非常喜歡。 –

0

您在這裏失蹤操作:

value == "Email Address" value == "Telephone" 

應該是:

value == "Email Address" || value == "Telephone" 

而且,您的ready事件處理程序錯過了結尾});。但是,您不必根據即時處理程序聲明擴展。