我正在创建一个带输入的表单,如果输入类型为空,则禁用按钮提交但是,如果输入字段的长度为> 0启用提交按钮
<input type='text' id='spa' onkeyup='check()'><br>
<input type='text' id='eng' onkeyup='check()'><br>
<input type='button' id='submit' disabled>
function check() {
if($("#spa").lenght>0 && $("#eng").lenght>0) {
$("#submit").prop('disabled', false);
} else {
$("#submit").prop('disabled', true);
}
}
它可以工作,但如果那时我删除了例如仍然启用按钮提交的输入spa的内容
答案 0 :(得分:42)
使用trim和val。
var value=$.trim($("#spa").val());
if(value.length>0)
{
//do some stuffs.
}
val()
:返回输入的值。
trim()
:会修剪空白区域。
答案 1 :(得分:19)
使用.val()
,它会返回<input>
$("#spa").val().length > 0
你有一个拼写错误,length
没有lenght
。
答案 2 :(得分:7)
由于javascript是动态类型的,而不是像上面那样使用.length属性,你只需将输入值视为布尔值:
var input = $.trim($("#spa").val());
if (input) {
// Do Stuff
}
您还可以将逻辑提取到函数中,然后通过分配类并使用each()
方法,代码更具动态性,例如,如果将来您想要添加另一个输入,则不会; t需要更改任何代码。
因此,不是将函数调用硬编码到输入标记中,而是可以为输入提供一个类,在此示例中为test
,并使用:
$(".test").each(function () {
$(this).keyup(function () {
$("#submit").prop("disabled", CheckInputs());
});
});
然后调用以下内容并返回一个布尔值以分配给disabled
属性:
function CheckInputs() {
var valid = false;
$(".test").each(function () {
if (valid) { return valid; }
valid = !$.trim($(this).val());
});
return valid;
}
您可以看到我在this JSFiddle.
中提到的所有内容的实例答案 3 :(得分:4)
为什么不使用:
<script>
$('input').keyup(function(){
if(($('#eng').val().length > 0) && ($('#spa').val().length > 0))
$("#submit").prop('disabled', false);
else
$("#submit").prop('disabled', true);
});
</script>
然后删除输入上的onkeyup功能。
答案 4 :(得分:3)
试试这个
$.trim($("#spa").val()).length > 0
它不会将任何空白区域视为正确的值
答案 5 :(得分:2)
如果您在应用程序中使用jquery-validate.js
,请使用以下表达式。
if($("#spa").is(":blank"))
{
//code
}
答案 6 :(得分:2)
如果您决定展开表单,此代码段将处理两个以上的复选框。
$("input[type=text]").keyup(function(){
var count = 0, attr = "disabled", $sub = $("#submit"), $inputs = $("input[type=text]");
$inputs.each(function(){
count += ($.trim($(this).val())) ? 1:0;
});
(count >= $inputs.length ) ? $sub.removeAttr(attr):$sub.attr(attr,attr);
});