Имейте логику построения только для чисел и значение меньше 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 балла.
также иногда я получаю «неопределенный» в текстовом поле
Во-первых, вместо события 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>
Этот код работает отлично! 🙂 проверить это
Других решений пока нет …