2011-11-06 94 views
1

我一直在尋找解決方案來禁用表單提交按鈕,直到填寫必填字段。我在這裏找到了一些東西在stackoverflow(禮貌mblase75),但它是標準的jQuery,並不適用於jQuery Mobile。
如何禁用表單提交按鈕,直到填充jQuery Mobile的字段?

背後的原因是移動頁面上有一個表單,在提交之前需要填寫所有字段。驗證通過PHP解決,因此它不是必需的部分。

$(document).ready(function() { 
    $form = $('#formid'); // cache 
    $form.find(':input[type="submit"]').prop('disabled', true); // disable submit btn 
    $form.find(':input').change(function() { // monitor all inputs for changes 
     var disable = false; 
     $form.find(':input').not('[type="submit"]').each(function(i, el) { // test all inputs for values 
      if ($.trim(el.value) === '') { 
        disable = true; // disable submit if any of them are still blank 
      } 
     }); 
     $form.find(':input[type="submit"]').prop('disabled',disable); 
     }); 
    }); 

可悲的是,我不是一個jQuery大師,如果可能的話,我想幫助一下。 也歡迎任何其他建議(即使使用jQuery移動進行驗證)。

+0

http://stackoverflow.com/questions/5854580/jquerymobile-button/5862415#5862415相關 –

+0

這是解決方案的一部分,但是這是工作的一部分,該按鈕被禁用,但沒有得到一次啓用表格完成。 – Aznim

+0

另外,jQuery版本: jQuery:1.6.4 jQuery Mobile:1.0RC2 – Aznim

回答

1
$(function() { 
    var form = $('#formid'); 
    var submitBtn = $('#submitBtnId'); 

    submitBtn.addClass('disable'); 

    form.submit(function() 

     if(validate()) { 
      submitBtn.removeClass('disable'); 
     } 

     if(submitBtn.hasClass('disable')) { 
      return false; 
     } 

     else { 
      return true; 
     } 

    }); 

    function validate() { 
     form.find('input, textarea').change(function(){ 
      // validation goes here if all inputs are validate then return true otherwise false 
     }); 
    } 
}); 
0

您可能實際上正在檢查其他「按鈕」的值,如輸入[type =「button」]或輸入[type =「reset」]。除非設置它們,否則它們具有空白值。下面的代碼佔本(加上一些更多的緩存語句):

$(document).ready(function() { 
    var $form = $('#formid'), // cache 
     $inputs = $form.find(':input'), // MOD extra caching 
     $buttons = $inputs.not(':submit, :reset, :button'), 
     $fields = $inputs.not($buttons), 
     $submits = $buttons.filter(':submit'); 

    $submits.prop('disabled', true); // disable submit btn 
    $fields.keyup(function() { // monitor all inputs for changes, MOD changed to keyup 
     var disable = false; 
     $fields.each(function(i, el) { // test all inputs for values 
      if ($(el).val() === '') { // MOD use jQuery to get value 
        disable = true; // disable submit if any of them are still blank 
        return false; // MOD stop "each" if even one field is blank... less waste 
      } 
     }); 
     $submits.prop('disabled',disable); 
     }); 
}); 

這將不考慮其中沒有被檢查一組單選按鈕,但是。

相關問題