我使用循环生成了以下类型的textarea字段:
<textarea id="txta_<?=$sno?>" value="<?php echo $sno; ?>"
onkeyup="validateDecimal(<?php echo $sno;?>,<?php echo $decimal_value; ?>)"
onkeypress="return isNumberKey(<?php echo $sno;?>,event)"
name="txta_<?=$sno?>"><?=$row->parameter_result?></textarea>
为了更简化,文本字段将是这样的:
<form action="index.php" method="post" name="adminForm" >
<textarea id="txta_1" value="<?php echo $sno; ?>" onkeyup="validateDecimal(1,3)" onkeypress="return isNumberKey(<?php echo $sno;?>,event)" name="txta_2" style="width: 185px; height: 22px;"><?=$row->parameter_result?></textarea>
<br />
<textarea id="txta_2" value="<?php echo $sno; ?>" onkeyup="validateDecimal(2,2)" onkeypress="return isNumberKey(<?php echo $sno;?>,event)" name="txta_2" style="width: 185px; height: 22px;"><?=$row->parameter_result?></textarea>
<br />
<textarea id="txta_3" value="<?php echo $sno; ?>" onkeyup="validateDecimal(3,1)" onkeypress="return isNumberKey(<?php echo $sno;?>,event)" name="txta_3" style="width: 185px; height: 22px;"><?=$row->parameter_result?></textarea>
</form>
我需要允许用户输入允许小数位数的数字。小数位来自数据库。 因此,txta_1允许的小数位可能与txta_2不同。 也就是说,txta_1最多可以包含3个小数位,txta_2最多可以包含2个小数位,或者可能是其他位数,具体取决于数据库中的值。
我已尝试使用正则表达式,但无法达到解决方案。怎么办呢?
答案 0 :(得分:0)
对于这个问题,Javascript会更容易。试试这个:
<script type="text/javascript">
function validateDecimal(sidd,decimalvalue) {
var sid = sidd;
var decimal = decimalvalue;
var txtdata = document.getElementById('txta_'+sid).value;
var s = txtdata.split('.');
if (s[1].length > decimal) {
alert( "Result should be upto " + decimal +" decimal number." );
var textdata = parseFloat(txtdata).toFixed(decimal);
document.getElementById('txta_'+sid).value = textdata;
}
}
</script>
请参阅Codepad>>
上的演示