2015-07-19 34 views
0

我有不同的textareas我希望在提交按钮被激活之前完成的形式。我已经研究了这一点,并已经找到了如何指定特定的textareas /输入,但依赖于用户组将取决于显示多少文本区域,所以我需要一个全屏javascript来检查页面上显示的任何textareas是否填充过提交按钮被激活。Javascript禁用提交,除非所有文本区域填充

我看了这个:http://jsfiddle.net/qKG5F/641/但是还没有成功实现它自己。

(function() { 
$('form > input').keyup(function() { 

    var empty = false; 
    $('form > input').each(function() { 
     if ($(this).val() == '') { 
      empty = true; 
     } 
    }); 

    if (empty) { 
     $('#register').attr('disabled', 'disabled'); 
    } else { 
     $('#register').removeAttr('disabled'); 
    } 
}); 
})() 

难道这是因为我如何创建了我的textareas?如图所示,而不是使用<input>作为示例的jsfiddle下面

<textarea name="i_2" id="i_2" class="input-block-level"></textarea> 

上述一样。

如果不是所有的textareas已经被填充(没有指定每个textarea),有没有什么办法可以禁用提交按钮?我使用JSFiddle示例相应地编辑了我的提交按钮。

+0

一个textarea不是输入字段。您可以通过为所有元素提供一个类而不是将输入元素用作选择器来轻松解决此问题。 – Trace

+1

我可以看到您的完整html吗? –

+0

不是'$('form> input')',而是使用'$('form')。children(':input')'来处理textareas –

回答

0

为什么你认为textarea的输入?这里是当你有一种形式的输入和textareas的情况下的代码,并且如果其中一个输入或textareas是空的,你希望该按钮被禁用。输入和textarea是不同的html元素!你不能用“输入”选择textarea。

(function() { 
    $('form > input, form > textarea').keyup(function() { 

     var empty = false; 
     $('form > input, form > textarea').each(function() { 
      if ($(this).val() == '') { 
       empty = true; 
      } 
     }); 

     if (empty) { 
      $('#register').attr('disabled', 'disabled'); 
     } else { 
      $('#register').removeAttr('disabled'); 
     } 
    }); 
})() 

仅适用于文字区域使用:

$('form > textarea') 

更好的方法是使用类的名称,例如“must_be_filled”,这类分配给任何HTML元素。

的,你可以选择通过要素:

$('form > .must_be_filled') 

试试这个:

http://jsfiddle.net/g0m79p81/

1

在HTML5中,您可以使用一个非常简单的“required”命令在提交按钮激活之前将任何表单元素设置为必填字段。它消除了对任何不必要的JavaScript的需求。

<textarea name="i_2" id="i_2" class="input-block-level" required></textarea> 

试试看:)这样的东西,这就是为什么我喜欢HTML5

+0

这不会解决他的问题,虽然..是的,他可以使用必需的但他的按钮仍然不会被禁用等等 –