Tengo dos tipos de función de llamada check_negative_value() . en el primer tipo configuro onchange=change_quantity(this) y luego llamo check_negative_value() desde allí como:
function change_quantity(elem) { check_negative_value(elem); console.log(elem); } y en el segundo tipo configuro decrement_cart(this) y luego llamo check_negative_value() desde allí como:
function decrement_cart(elem) { const input = $(elem).next('input'); check_negative_value(input); console.log(input); } y en check_negative_value() debo usar input.value o input.val() !!
function check_negative_value(input){ if(input.value <= 0){ alert('not accept value under 1'); input.value = 1; } }O :
function check_negative_value(input){ if(input.val() <= 0){ alert('not accept value under 1'); input.val(1); } } porque cada función de llamada tiene un elemento diferente y el resultado de console.log es este: en la llamada jquery:
r.fn.init [input.input-number.text-center, prevObject: r.fn.init(1)]en llamada javascript:
<input class="input-number text-center" type="number" value="-1" min="0" max="1000" onchange="change_quantity(this)">el código html es:
<div class="input-group-button" onclick="decrement_cart(this)"> <span class="input-number-decrement">-</span> </div> <input class="input-number text-center" type="number" min="0" max="1000" onchange="change_quantity(this)"> <div class="input-group-button" onclick="increment_cart(this)"> <span class="input-number-increment">+</span> </div>``` ¿Cómo puedo usar el elemento de entrada en check_negative_value() sin diferencia entre input.val() y input.value ?
Gracias
Ni JavaScript ni jQuery tienen un elemento de input . Los elementos input son objetos DOM proporcionados por el entorno host (navegador), no por el lenguaje (JavaScript) o la biblioteca (jQuery).
La diferencia que está viendo es el objeto DOM (con una propiedad de value ) frente a un objeto contenedor de jQuery a su alrededor (con un método val ).
¿Cómo puedo usar el elemento de entrada en
check_negative_value()sin diferencia entreinput.val()yinput.value?
Puede verificar si lo que tiene es un contenedor jQuery al ver si tiene una propiedad jquery o quizás más directamente en este caso si tiene una propiedad val :
function check_negative_value(input){ if (input.jquery) { // It's a jQuery wrapper, get the first DOM element it contains from it input = input[0]; } if (input.value <= 0){ alert('not accept value under 1'); input.value = 1; } } Nota al margen: val() devuelve una cadena (a menos que el conjunto de jQuery esté vacío), no un número (el valor de value también es siempre una cadena). Aunque <= 0 lo convertirá implícitamente, podría considerar convertirlo a propósito, ya que la conversión implícita supone que "" debería ser 0 ; más en mi respuesta aquí .