我正在尝试验证HTML表单,如果提交的格式错误,则会打印出错误。但是,它不会在下面全部显示错误,而是将很长的消息直接打印到表单中。
我尝试过重新格式化几乎所有内容并查找错误,但是到目前为止,我什么都没发现。
在assignment_8_mortgaga_calc.php中。这是调用另一个文件的功能。
function calcMortgage()
{
if(XMLHttpRequestObject) {
XMLHttpRequestObject.open("POST", "assignment_8_mortgage_ajax.php");
XMLHttpRequestObject.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
var returnedData = XMLHttpRequestObject.responseText;
processData(returnedData);
}
}
var amountfinanced = document.getElementById('amountfinanced').value;
var interestrate = document.getElementById('interestrate').value;
var data = amountfinanced + '|' + interestrate + '|';
XMLHttpRequestObject.send("data=" + data);
}
return false;
}
这是用于(理论上)显示错误的表单下的div
<div id="errordiv" style="color: red;"></div>
从另一个文件(assignment_8_mortgage_ajax.php)的HTML表单中接收数据
<?php
$myData = $_POST['data']; //This receives the data passed from the HTML form
list($amountfinanced, $interestrate) = explode('|', $myData);
进行验证:
//Do Validations
$msg = "ERROR: ";
$error_cnt = 0;
if (empty($amountfinanced))
{
$msg .= "<br><span class='errormsg'>Please enter an amount </span>";
$error_cnt++;
} else {
if (!is_numeric($amountfinanced))
{
$msg .= "<br><span class='errormsg'>Amount entered, '".$amountfinanced."' is not numeric </span>";
$error_cnt++;
}
}
if (empty($interestrate))
{
$msg .= "<br><span class='errormsg'>Please enter an interest rate </span>";
$error_cnt++;
} else {
if (!is_numeric($interestrate))
{
$msg .= "<br><span class='errormsg'>Interest rate entered, '".$interestrate."' is not numeric </span>";
$error_cnt++;
}
}
计算抵押贷款:
$interestrate_forcalc = $interestrate / 100 ;
$monthy_payment = ($amountfinanced * $interestrate_forcalc) / 12;
$monthy_payment_formatted = number_format($monthy_payment, 2);
并显示页面:
if ($error_cnt > 0)
{
print $msg;
} else {
print $monthy_payment_formatted;
}
?>
With Calculated Monthly Payment
When Clicked With Empty Fields
这是显示在小框中的消息: Error Message
很抱歉,我必须仅包含错误消息的图像。当我将其粘贴到文本框中时,它不会全部显示出来。我希望它会显示在“计算付款”按钮下的div
中。
任何帮助将不胜感激。预先谢谢你。
答案 0 :(得分:0)
我已经解决了这个问题。我更改了部分内容:
$interestrate_forcalc = $interestrate / 100 ;
$monthy_payment = ($amountfinanced * $interestrate_forcalc) / 12;
$monthy_payment_formatted = number_format($monthy_payment, 2);
和
if ($error_cnt > 0)
{
print $msg;
} else {
print $monthy_payment_formatted;
}
?>
我改成说
if ($error_cnt > 0)
{
echo $msg;
} else {
$interestrate_forcalc = $interestrate / 100 ;
$monthly_payment = ($amountfinanced * $interestrate_forcalc) / 12;
$monthly_payment_formatted = number_format($monthly_payment, 2);
echo $monthly_payment_formatted;
}
以便我可以在计算之前检查是否有错误(如aynber所说)。
然后,我进入代码的一部分,内容为:
function processData(returnedData)
{
if (returnedData.substr(0,5) == 'ERROR')
{
var errorDiv = document.getElementById('errordiv');
errorDiv.innerHTML = "ERROR ON DATABASE";
} else {
monthlypayment = document.getElementById('monthlypayment');
monthlypayment.value = returnedData;
}
return false;
}
在这里获取数据并检查是否有错误,我将其更改为:
function processData(returnedData)
{
if (returnedData.substr(0,5) == 'ERROR')
{
var errorDiv = document.getElementById('errordiv');
errorDiv.innerHTML = returnedData;
} else {
monthlypayment = document.getElementById('monthlypayment');
monthlypayment.value = returnedData;
var errorDiv = document.getElementById('errordiv');
errorDiv.innerHTML = "";
}
return false;
}
现在它可以正确显示错误消息了。
谢谢!