2011-09-03 50 views
4

手我有什麼是我的小提琴這裏http://jsfiddle.net/mPuj9/4/尋找我的jQuery和JS腳本

我試圖做的是禁用按鈕,直到所有的textbox ES被填充和checkbox檢查。我目前的代碼不好,它可以讓你在某些情況下提交,我不知道如何使用checkbox

CODE

$(document).ready(function() { 
    $('.textfield').blur(function() { 
     if ($.trim(this.value) == "") { 
      $('#btnUpdate').attr("disabled", true); 
     } 
     else { 
      $('#btnUpdate').removeAttr("disabled"); 
     } 
    }); 
}); 

$(document).ready(function() { 
    $('#termid').change(function() { 
     var val = $(this).val(); 
     $('#reservationdetails').empty().addClass('loading').load('../kratisis/forms/' + val + '.php', function() { 
      $('#reservationdetails').removeClass('loading') 
     }); 
    }); 
}); 
+0

請不要發佈僅包含鏈接到異地代碼的問題。 「請修復這個代碼塊」的問題是「太本地化」的定義。 – meagar

回答

2

Here you go

http://jsfiddle.net/mPuj9/8/

$(document).ready(function() { 
    $('form').delegate('input:text, input:checkbox', 'blur keyup change', function() { 
     if(($('form input:text').filter(function(){ return $.trim(this.value) == ''; }).length > 0) 
      || ($('form input:checked').length == 0)){ 
      $('#btnUpdate').attr("disabled", true); 
     } 
     else { 
      $('#btnUpdate').removeAttr("disabled"); 
     } 
    }); 
}); 
+0

@Giorkouros - 看看這個小提琴。 – ShankarSangoli

+0

這很好,但一個小問題。當用戶在文本框外單擊時,提交按鈕被禁用或啓用。有什麼辦法可以在插入文本框的時候做到這一點?我在問,因爲我使用jQuery datepicker作爲一個文本框。 – EnexoOnoma

+0

這裏你去http://jsfiddle.net/mPuj9/8/。還更新了答案。 – ShankarSangoli

1

這裏的另一種方式,你可以做到這一點,這也適用,如果有人按下在文本框中輸入,或者如果瀏覽器自動填充輸入:

$(function() { 
    $("form button").attr("disabled", true); //disable buttons at first 
    var inputs = 0; //keep count of the inputs 
    $("form input, form select, form textarea").each(function() { 
     inputs++; //increment counter 
     $(this).keypress(function() { 
      if ($.trim($(this).val()) != "") { //if the value isnt empty 
       inputs--; //decrement counter 
       if (inputs == 0) { //if theyre all filled in 
        $("form button").attr("disabled", false); 
       } 
      } 
     }).trigger("keypress"); //in case it was autofilled by the browser 
    }); 
    $("form").submit(function(e) { //prevent the form being submitted by pressing enter 
     if (inputs != 0) { //if they arent all filled in 
      alert("Some fields aren't filled in. Please fix them and try again."); //tell the user 
      e.preventDefault(); //cancel sending the form 
      return false; 
     } 
    }); 
}); 
+0

這是你的代碼http://jsfiddle.net/mPuj9/6/的小提琴,我仍然沒有使它的工作。你能看看嗎? – EnexoOnoma

+0

@Girokouros我現在就去做。 – kirb

+0

我發現了這個問題:我設置了按鈕被禁用,而不是在所有內容都被填充時啓用。[這裏是jsfiddle工作版本的鏈接](http://jsfiddle.net/SkaEx/1/)。 – kirb

0

我認爲問題在於你沒有使用.each()作爲文本字段。您正在檢查最近一次更改的值是否爲「」,但您並未檢查每個值。