$ ( "input: not (: empty)" ) не работает

<html>
<head>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    alert('hi'+$("input:text").val());
    $("input:not(:empty)").val("sdfdf");
  });
});
</script>
</head>
<body>
<input type="text" value="aa" />
<input type="text" value="" />
<input type="text" value="aa" />
<button>Click me</button>
</body>
</html>

Я пытаюсь получить доступ к пустому текстовому поле с помощью jquery и присваивать ему значение hello. но он не работает.

заблаговременно

Ответы

Ответ 1

:empty проверяет, имеет ли элемент дочерние элементы. Элементы input не могут иметь дочерние элементы.

Если вы хотите проверить, что значение элемента input пустое:

$(document).ready(function(){
  $("button").click(function(){
    $("input").filter(function() {
        return this.value.length !== 0;
    }).val("sdfdf");
  });
});

Здесь мы получаем все элементы input, а затем фильтруем его, поэтому включаются только те, чье свойство value не "".

Ответ 2

Вы можете использовать другой селектор для своей задачи:

$("input[value='']").val("sdfdf");

Ответ 3

JQuery ( ': пусто') Описание: выберите все элементы, у которых нет детей (включая текст узлы).

От http://api.jquery.com/empty-selector/. Таким образом, :empty не делает то, что вы думаете.

Посмотрите на этот ответ fooobar.com/questions/60662/... для решения.

Ответ 4

Вы можете использовать .each с этим внутри:

if( $(this).val().length === 0 ) {
    $(this).parents('p').addClass('warning');
}