jQuery

2012-07-14 5 views
6

ile girişler boşsa, gönder düğmesine basın. Gönderme formunu, kullanıcı formdaki form alanlarını dolduruncaya kadar devre dışı bırakmaya çalışıyorum.jQuery

Burada gerçekten iyi bir cevabı olan THIS iş parçacığı buldum. Alanlar dolduğunda, gönder düğmesine yeniden etkinleştirmek için küçük bir sorun yaşıyorum.

Birisi lütfen bu işleve göz atabilir ve neleri kaçırdığımı anlamaya yardım edebilir mi? Herhangi bir yardım büyük memnuniyetle karşılanır: D Teşekkür ederiz.

Heres a Fiddle da ayrıca gibi keyUp kullanabilirsiniz yerine bulanıklık

$(document).ready(function() { 
var $submit = $("input[type=submit]"); 

if ($("input:empty").length > 0) { 
$submit.attr("disabled","disabled"); 
} else { 
$submit.removeAttr("disabled"); 
} 
}); 


<form method="POST" action="<%=request.ServerVariables("SCRIPT_NAME")%>"> 
User Name: <input name="Username" type="text" size="14" maxlength="14" /><br /> 
Password: <input name="last_name" type="password" size="14" maxlength="14"><br /> 
<input type="submit" value="Login" name="Submit" id="loggy"> 
</form> 

cevap

14
$(document).ready(function() { 
    var $submit = $("input[type=submit]"), 
     $inputs = $('input[type=text], input[type=password]'); 

    function checkEmpty() { 

     // filter over the empty inputs 

     return $inputs.filter(function() { 
      return !$.trim(this.value); 
     }).length === 0; 
    } 

    $inputs.on('blur', function() { 
     $submit.prop("disabled", !checkEmpty()); 
    }).blur(); // trigger an initial blur 
}); 

Working sample

: Birden olayları birleştirebilirsiniz Ayrıca

$inputs.on('keyup', function() { 
     $submit.prop("disabled", !checkEmpty()); 
    }).keyup(); // trigger an initial keyup 

:

$inputs.on('keyup blur', function() { 
     $submit.prop("disabled", !checkEmpty()); 
    }).keyup(); // trigger any one 
+0

Çok teşekkür ederim! Bu harika çalışıyor: D üzerinde bulanıklık değiştirmek mümkün mü? Bu nedenle, kullanıcı, devre dışı bırakılması için girişlerden uzaklaşmak zorunda kalmaz? – xxstevenxo

+0

@xxstevenxo yup, güncellemeye bakın. – thecodeparadox

+0

numaralı tuş ile de yapabilirsiniz, 'blur' olarak 'keypress' olarak değiştirdim ve umuyordum tam sonucunu aldım. Yardımlarınız ve demonuz için çok teşekkür ederim! : D – xxstevenxo

1

Sorunuzda sürekli olarak giriş durumunu kontrol ettiğiniz kodu görmüyorum, bence sorun şu ki.

Bunu yapmak için canlı etkinlikleri kullanabilirsiniz.

$(document).ready(function() { 
     var $submit = $("input[type=submit]"); 

     function checkSubmitState() 
     { 
      if ($("input:empty").length > 0) { 
      $submit.attr("disabled","disabled"); 
      } else { 
      $submit.removeAttr("disabled"); 
      } 
     } 

     // check the submit state on every change or blur event. 
     $("input").live("change blur", checkSubmitState); 
}); 
0

koşul çalıştırmadan önce değerini kontrol etmek keyup olayı kullanın: Örneğin, kodunuzu kullanarak

$(document).ready(function() { 
    $('input:text, input:password').keyup(function() { 
     if ($(this).val() !== "") { 
      $('input:submit').removeAttr('disabled'); 
     } else { 
      $('input:submit').attr('disabled', 'true'); 
     } 
    }); 
}); 

http://jsfiddle.net/tovic/He4Kv/23/

0

burada bu cevapların bazıları güncel bir lil vardır jQuery pasajını aradığım gibi. Onları test ettim ve sanırım, artık benimsediklerimden dolayı düzgün çalışmıyorlar.

Bu yüzden kendim yaptım ve işte giriş olayı dinleyen daha yeni bir çalışma yolu (jQuery> = 3.0).

var inp = $('[type=text]'), 
 
    btn = $('[type=button]') 
 
btn.prop('disabled',true) 
 

 
inp.on('input',() => { 
 
    var empty 
 
    inp.map(v => 
 
    !inp.eq(v).val() ? 
 
     empty = true : false 
 
) 
 
    btn.prop('disabled',empty || false) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<form> 
 
\t <input type=text><br> 
 
\t <input type=text><br> 
 
\t <input type=text><br> 
 
\t <input type=button value=Send> 
 
</form>

here JavaScript, örneğin bir düz.