2011-11-06 96 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); 
     }); 
}); 

这将不考虑其中没有被检查一组单选按钮,但是。

相关问题