Ответ 1
используйте trim и val.
var value=$.trim($("#spa").val());
if(value.length>0)
{
//do some stuffs.
}
val(): вернуть значение ввода.
Trim(): обрезает пробелы.
Я делаю форму со входами, если тип ввода пуст, кнопка submit отключена, но если поля ввода имеют длину > 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);
}
}
он работает, но если я удалю, например, содержимое входного спа, кнопка submit все еще включена.
используйте trim и val.
var value=$.trim($("#spa").val());
if(value.length>0)
{
//do some stuffs.
}
val(): вернуть значение ввода.
Trim(): обрезает пробелы.
используйте .val()
, он вернет значение <input>
$("#spa").val().length > 0
И у вас была опечатка, length
not lenght
.
Поскольку javascript динамически типизируется, вместо использования свойства .length, как указано выше, вы можете просто обрабатывать входное значение как логическое:
var input = $.trim($("#spa").val());
if (input) {
// Do Stuff
}
Вы также можете извлечь логику в функции, затем, назначив класс и используя метод each()
, код более динамичен, если, например, в будущем вы хотели бы добавить другой вход, вам не понадобится изменить любой код.
Поэтому вместо того, чтобы жестко кодировать вызов функции во входной разметке, вы можете дать входы классу, в этом примере это 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;
}
Вы можете увидеть рабочий пример всего, что я упомянул в этом JSFiddle.
Почему вы не используете:
<script>
$('input').keyup(function(){
if(($('#eng').val().length > 0) && ($('#spa').val().length > 0))
$("#submit").prop('disabled', false);
else
$("#submit").prop('disabled', true);
});
</script>
Затем удалите функцию onkeyup на входе.
Попробуйте это
$.trim($("#spa").val()).length > 0
Он не будет обрабатывать любое свободное пространство, если оно есть как правильное значение
если вы используете jquery-validate.js
в своем приложении, используйте выражение ниже.
if($("#spa").is(":blank"))
{
//code
}
Этот фрагмент обработает более двух флажков, если вы решите развернуть форму.
$("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);
});
Рабочий пример: http://jsfiddle.net/sr4gq/