Jquery .next () функция не работает - PullRequest
1 голос
/ 21 декабря 2010

Ребята, я пытаюсь сделать что-то вроде этого, у меня есть два href и текстовое поле в середине этих <-> TEXT <+> Поэтому, когда я нажимаю - и + значение в TXT должно увеличиваться или уменьшаться наодин

<!-- <div class="quantity noprint">
   <div  class="subtract" title="Less Quantity"></div><input type="text" id="addToCartQty<%=addProduct.getLongID()%>" value="<%=addProduct.getInteger("ATR_WebMinQuantity",1)/addProduct.getInteger(MCRConstants.DM_ATR_LEGACY_CASE_VENDOR_PACK_SIZE,1) %>" name="ADD_CART_ITEM<>quantity" class="text" maxlength="3" /><div  class="add" title="Add Quantity"></div>

</div> --!>

и я использую jquery для + и - значение в текстовом поле.Всякий раз, когда я нажимаю +, это происходит правильно, но для - он принимает имя поля TEXT вместо его значения.Любое решение для этого, чтобы оно приняло значение поля TEXT, используемого Jquery, следующее:

 $(".quantity .subtract").click(function () {
        var qtyInput = $(this).next('input');
        var qty = parseInt(qtyInput.val());
        if (qty > 1)
            qtyInput.val(qty - 1);

        qtyInput.focus();
        return false;
    });

    $(".quantity .add").click(function () {
        var qtyInput = $(this).prev('input');
        var qty = parseInt(qtyInput.val());
        if (qty >= 0 && (qty + 1 <= 999))
            qtyInput.val(qty + 1);

        qtyInput.focus();
        return false;
    });

Ответы [ 5 ]

1 голос
/ 21 декабря 2010

Вы, вероятно, ищете функцию nextAll(): http://api.jquery.com/nextAll/.

1 голос
/ 21 декабря 2010

.next () возвращает следующий брат каждого выбранного элемента.Если селектор передается в функцию, следующий брат возвращается, только если он соответствует селектору.Так как ваши + и - ссылки являются отдельными элементами, у них будут разные ближайшие братья и сестры.Вы ищете .siblings ():

var qtyInput = $(this).siblings('input');
0 голосов
/ 22 декабря 2010

Наконец-то я решил, найдите jquery ниже

  $(".quantity .subtract").click(function () {
        var qtyInput = $(this).nextAll('a');
        var qtytxt = $(qtyInput).prev('input');
        var qty = qtytxt.val();

        if (qty > 1)
            qtytxt.val(qty - 1);
        qtytxt.focus();
        return false;
    });

Я просто получил все следующее для href и получил предыдущий, следовательно получил значение TEXT так, как я хотел.Спасибо всем, ребята, ура;)

0 голосов
/ 21 декабря 2010

это работает. Я убрал некоторые ненужные для этого примера свойства.

UPDATE:

Может ли ADD_CART_ITEM<>quantity быть причиной проблемы? > может интерпретироваться как закрывающий тег и приводить к странному поведению. По крайней мере, как вы можете видеть из моего примера, ваш код должен работать, если в нем нет скрытых проблем. Идея определенно верна.

0 голосов
/ 21 декабря 2010

Может быть, вы можете попробовать другой тип запроса:

$(".quantity .subtract").click(function () {
    var qtyInput = $(this).closest('.quantity').find('input');
    var qty = parseInt(qtyInput.val());
    if (qty > 1)
        qtyInput.val(qty - 1);

    qtyInput.focus();
    return false;
});

$(".quantity .add").click(function () {
    var qtyInput = $(this).closest('.quantity').find('input');
    var qty = parseInt(qtyInput.val());
    if (qty >= 0 && (qty + 1 <= 999))
        qtyInput.val(qty + 1);

    qtyInput.focus();
    return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...