我正在使用此javascript来禁用我的表单提交按钮,直到用户输入textarea字段。填充textarea后,不再禁用提交按钮。
然而,虽然这适用于单个文本区域,我现在想找到一种方法来使这项工作,以便如果我有四个文本输入字段,然后保持提交按钮禁用,直到所有这些都不为空/填充带有文字。
这是我现在正在使用的内容:
<form action=\"includes/welcomestats.php\" method=\"post\" id=\"form1\" onSubmit=\"if (this.display_name.value == '') {return false;}\">
<input type=\"text\" name=\"display_name\" id=\"display_name\" maxlength=\"30\" placeholder=\"Display Name\">
<input type=\"submit\" class=\"welcome-submit2\" name=\"submit\" value=\"Next ->\" id=\"submit\"/>
</form>
<script>
$(function(){
$("#submit").submit(function(e){
if($("#display_name").val()==""))
{
e.preventDefault();
}
});
});
</script>
但是现在我在我的表单中添加了更多的文本输入字段,所以我需要脚本来保持我的提交按钮被禁用,直到所有文本字段都被填充,有人可以帮我吗?
我想将这些文本字段添加到我的表单中:
<input type=\"text\" name=\"public_email\" id=\"public_email\" maxlength=\"50\" placeholder=\"Email Address\">
<input type=\"text\" name=\"phone\" id=\"phone\" maxlength=\"30\" placeholder=\"Phone Number\">
<input type=\"text\" name=\"age\" id=\"age\" maxlength=\"2\" placeholder=\"Display Age\">
答案 0 :(得分:3)
您可以使用.filter
方法获取所有空输入元素,然后检查长度。
if ($('#form1 input').filter(function(){return $(this).val().length == 0;}).length > 0) {
e.preventDefault();
}
答案 1 :(得分:3)
尝试使用:
<script>
$(function(){
$('form input').each(function(){
if($(this).is(':empty')){
$('form #submit').preventDefault();
}
});
});
</script>
答案 2 :(得分:3)
使用此:http://jsfiddle.net/qKG5F/641/
<input type="submit" id="register" value="Register" disabled="disabled" />
(function() {
$('form > input').keyup(function() {
var empty = false;
$('form > input').each(function() {
if ($(this).val() == '') {
empty = true;
}
});
if (empty) {
$('#register').attr('disabled', 'disabled'); // updated according to http://stackoverflow.com/questions/7637790/how-to-remove-disabled-attribute-with-jquery-ie
} else {
$('#register').removeAttr('disabled'); // updated according to http://stackoverflow.com/questions/7637790/how-to-remove-disabled-attribute-with-jquery-ie
}
});
})()
答案 3 :(得分:0)
您需要OR运算符 - ||
因此,如果display_name
为空,或public_email
为空等等......
$(function(){
$("#submit").submit(function(e){
if($("#display_name").val()=="" || $("#public_email").val()=="" || $("#phone").val()=="" || $("#age").val()=="")
{
e.preventDefault();
}
});
});
答案 4 :(得分:0)
将要包含在此验证中的所有文本字段列为class="required"
类或其他内容,然后就可以执行此操作
var empty = $('.required').filter(function(){ return $(this).val() == "" }).length;
if(empty === 0){
//Enable your submit button all text fields have a value
}
答案 5 :(得分:0)
尝试此功能:
function checkInputs(form) {
var inputs, all,
status = true;
if (form && form instanceof jQuery && form.length) {
inputs = form.find("input[type=text]");
all = inputs.length;
while (all--) {
if (!inputs[all].value) {
status = false;
break;
}
}
return status;
}
}
在此处演示:http://jsbin.com/afukir/1/edit
编辑:我添加了instanceof
以确保只有在表单实际上是jQuery对象时才会继续执行此函数。