JQuery - Как я могу использовать И с селектором? - PullRequest
0 голосов
/ 12 июня 2018

Функция моего кода заключается в предупреждении пользователя, если текстовое поле ptype пусто.

$("input[name*='ptype']").each(function() {
                if ($(this).val() == "") {
                    $(this).css({'background-color' : '#feffe3'});
                    e.preventDefault();
                    alert("Enter Value!");
                }
            });

Однако мне нужно добавить еще один критерий, где другое поле amount не равно 0. Так что функция срабатывает при ptype="" && amount!=0.Я очень новичок в jQuery, и я не уверен, как использовать оператор AND здесь.Я пытался сделать некоторые на основе других вопросов, но, кажется, не работает.

$ ("input [name * = 'ptype'] [amount! = '0']"). Каждый(function () {

$ ("input [name * = 'ptype'], [amount! = '0']"). each (function () {

Чего мне не хватает?

Ответы [ 4 ]

0 голосов
/ 12 июня 2018

«где другое поле» - это ключевой вопрос.

Таким образом, вам нужен селектор, чтобы проверить, является ли выбранный элемент пустым, и другой элемент не равен нулю.

Привет!

Проблема логики здесь.с помощью $(selector) можно искать некоторые элементы.

В селекторах нет множества И / ИЛИ для многих наборов совпадающих элементов.
Селектором является ONE набор подходящих элементов..

Ни в коем случае этот селектор не может проверять атрибут value другого набора.

Таким образом, вы должны знать свою разметку и немного перемещаться ... И заботиться о переменных типов.

$("input[name*='ptype']").each(function() {
  if ( parseInt( $(this).next("input").val() ) != 0) {
    $(this).css({"background-color" : "red"});
    alert("Enter Value!");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

ptype: <input type="text" name="ptype"><br>
amount: <input type="text" name="amount" value="1">

Вы должны искать значение другого элемента здесь, насколько я понимаю.Таким образом, вы должны знать, что это за «другой» элемент, и методы, которые нужно использовать, могут сильно различаться в зависимости от вашего HTML ...

0 голосов
/ 12 июня 2018

Этот код $("input[name*='ptype'][amount!='0']").each(function() { действителен.Вам нужно проверить список CSS-селекторов .

. Возможно, проблема в выборе *=.input[name*="ptype"] означает Выбирает каждый элемент, значение атрибута имени которого содержит подстроку "ptype".

$('input[name*="ptype"][amount!="0"]').each(function() {
                if ($(this).val() == "") {
                    $(this).css({'background-color' : '#feffe3'});
                    e.preventDefault();
                    alert("Enter Value!");
                }
            });

Посмотрите на этот тест https://jsfiddle.net/xpvt214o/211871/

0 голосов
/ 12 июня 2018

Вы можете использовать эту функцию в своей кнопке.

function check(e){

    var verror = false;

    $("input[name*='ptype']").each(function(index, value) {
        var amount = $($("input[name='amount[]']").get(index)).val();
        var ptype = $(this).val();
        if(ptype.length <= 0 && amount.length > 0 ){
            verror = true;
            $(this).focus();
            return false;
        }
    });

    if(verror){
        e.preventDefault();
        alert("Enter Value!");
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form>
    ptype: <input type="text" name="ptype[]">
    amount: <input type="text" name="amount[]" value="1"> <br>

    ptype: <input type="text" name="ptype[]">
    amount: <input type="text" name="amount[]" value="2"> <br>

    <button type="button" onclick="check(event)">Click</button>
</form>
0 голосов
/ 12 июня 2018

Вы можете сделать это со знаком && .Код зависит от того, где находится ваше поле суммы и что это такое.Если я правильно понял, это должно быть примерно так:

$("input[name*='ptype']").each(function() {
                if ($(this).val() == "" && $(this).parent().find(input[name='amount']).val() != 0) {
                    $(this).css({'background-color' : '#feffe3'});
                    e.preventDefault();
                    alert("Enter Value!");
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...