javascript — только текстовое значение и значение меньше 6 из текстового поля — js

Имейте логику построения только для чисел и значение меньше 6 (может быть 5,9,4,6 … но не 6,01) должны быть исключены из ввода, пробовали что-то и получили решение, но столкнулись с некоторой проблемой …

Ниже ввод динамический в цикле PHP:

<input type="text" name="prd_<?php echo $prd['id']; ?>" id="prd_<?php echo $prd['id']; ?>" onkeypress="return chkvalue(<?php echo $prd['id']; ?>,<?php echo $prd['wgh']; ?>,<?php echo $prd['price']; ?> ); "/>

<input type="text" name="prdinto_<?php echo $prd['id']; ?>" id="prdinto_<?php echo $prd['id']; ?>" />

результат, как показано ниже:

<input type="text" name="prd_1" id="prd_1" onkeypress="return chkvalue(1,0.50,1430.00); "/>
<input type="text" name="prdinto_1" id="prdinto_1" />

<input type="text" name="prd_2" id="prd_2" onkeypress="return chkvalue(2,0.20,1130.00); "/>
<input type="text" name="prdinto_2" id="prdinto_2" />

<input type="text" name="prd_3" id="prd_3" onkeypress="return chkvalue(3,0.55,1340.00); "/>
<input type="text" name="prdinto_3" id="prdinto_3" />

ниже пробовал:

function chkvalue(id,wgh,price)
{
var number = document.getElementById("prd_"+id).value;
if (isNaN(number.trim())) {
alert("Enter only numbers.");
document.getElementById("prd_"+id).value = "";
}

if ( number.trim() > 6 ) {
alert("Value entered must be 6 or lower.");
document.getElementById("prd_"+id).value = "";
}

var ca = wgh * price;

document.getElementById("prdinto_"+id).value = ca ;
//document.getElementById("prdinto_"+id).value = ca;
}

с какой проблемой я сталкиваюсь:

1}, когда я набираю любую букву / слова на входе prod_1 или prod_2 — я получаю предупреждение «Введите только число», но после первой буквы: если я набираю a, то оповещения нет, но как только я снова набираю любую букву, которую получаю оповещение … но я не хочу, как это .. я хочу на первом письме он должен личность и сделать предупреждение

2} второе предупреждение «Введенное значение должно быть 6 или ниже» — здесь, когда я набираю 6.01, тогда также оно принимает значение, и никакое предупреждение. Я хочу, чтобы значение было ниже 6 … но оно может принимать десятичное значение, например 4.5 или 4.6

3} когда я делаю вкладку, то только она показывает предупреждение, нужно предупреждение при движении мыши, нажатия клавиш и т. Д ….

4} наконец prdinto_1, prdinto_2, prdinto_3 они не получают значения.

Необходимость что-то вроде этого — за 1,2,3 балла.

jsffle

также иногда я получаю «неопределенный» в текстовом поле

-1

Решение

Во-первых, вместо события onkeypress вы должны использовать событие onkeyup. Так что используйте OnKeyUp () метод вместо OnKeyPress () Метод. Тогда большинство проблем исчезнет!

    <!DOCTYPE html>
<table>
<tr>
<td>
<input type="text" placeholder="prd_1" name="prd_1" id="prd_1" onkeyup="chkvalue(1,0.50,1430.00)"/>
</td>
<td>
<input type="text"  placeholder="prdinto_1" name="prdinto_1" id="prdinto_1" />
</td>
</tr>
<tr>
<td>
<input type="text" placeholder="prd_2" name="prd_2" id="prd_2" onkeyup="chkvalue(2,0.20,30.00); "/>
</td>
<td>
<input type="text" placeholder="prdinto_2" name="prdinto_2" id="prdinto_2" />
</td>
</tr>
<tr>
<td>
<input type="text" placeholder="prd_3" name="prd_3" id="prd_3" onkeyup="chkvalue(3,0.55,10.00); "/>
</td>
<td>
<input type="text" placeholder="prdinto_3" name="prdinto_3" id="prdinto_3" />
</td>
</tr>
</table>
<script>
function chkvalue(id,wgh,price)
{
var number = document.getElementById("prd_"+id).value;
if (isNaN(parseInt(number.trim()))) {
alert("Enter only numbers.");
document.getElementById("prd_"+id).value = "";
}

if ( number.trim() > 6 ) {
alert("Value entered must be 6 or lower.");
document.getElementById("prd_"+id).value = "";
}

var ca = wgh * price;
document.getElementById("prdinto_"+id).value = ca;
//document.getElementById("prdinto_"+id).value = ca;

if (isNaN(parseInt(number.trim()))) {
alert("Enter only numbers.");
document.getElementById("prd_"+id).value = "";
document.getElementById("prdinto_"+id).value = "";
}

}

</script>

Этот код работает отлично! 🙂 проверить это

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]