当我单击"提交"时,我收到一个错误,指出该值未在我的 javascript 中定义,我用它来验证我的表单为 aForm.propertyid。
我认为这与使用选择并尝试验证是否选择了值有关,因为我以前没有针对选择进行过验证,并且我的其他表单都可以正常工作。
正确的值在 lease_edita 的 $_POST 中,但 checkForm(this) 似乎没有将任何东西传递给 javascript 进行验证 - 我的 checkForm(aValue) 没有得到 aValue。
我在 checkForm 中添加了一个警报以显示错误检查的值,但它没有得到值。 onchange="checkProperty(this.value);" 工作正常,并且确实得到了一个值。
属性 ID 未定义 @/lease_jsLibrary.js
我希望我发布了足够的代码...我已经为此工作了 2 天而没有找到解决方案,并希望得到建议或想法。
形式:
<form name ="addEditLeaseForm" id="addEditLeaseForm" action="lease_edita.php" method="post" onsubmit="return checkForm(this)">
<?php
$output = <<<HTML
<table class="center1" width="500">
<tr>
<td style="text-align: right; ">
Property:
</td>
<td>
<select name="propertyid" id="propertyid" stle="width:270px;" onchange="checkProperty(this.value);" />
<option value='' selected></option>
HTML;
$propList = getPropertyList(); // get the properties to populate the list box
foreach ($propList as $aProperty) {
extract($aProperty);
$output .= <<<HTML
<option value="$idproperty"
HTML;
if ($idproperty == $prop_id) {
$output .= <<<HTML
selected
HTML;
}
$output .= <<<HTML
>$address</option>
HTML;
}
$output .= <<< HTML
</select>
<font id="propertyErr" style="visibility: hidden; color:red; font-weight: bold;">*Required</font>
</td>
</tr>
HTML;
echo $output;
?>
<tr>
<td colspan ="2" align="center">
<input type="submit" value="<?php echo $buttontext ?>" />
<input type="button" name="Cancel" value="Cancel" onClick="history.go(-1);return true;" />
</td>
</tr>
</table>
</form>
<p style="text-align: center">
<input type="button" name="Property" value="Back to Property" onclick="window.location = '../property/property_main.php' " />
</p>
lease_jsLibrary.js内容:
function trim(strToTrim) {
"use strict";
//create a regular expression literal to identify leading and trailing spaces
var reg = /^'s+|'s+$/g;
//use the string method - replace - to remove leading and trailing spaces
return strToTrim.replace(reg,"");
}
// checks whether an input control is empty (i.e., the user failed to enter a required input)
// note: it uses the trim method (see above) to eliminate white spaces before checking the input
function isEmpty(aControl) {
return (trim(aControl.value).length == 0) ? true : false;
}
// checks for invalid characters in a string
function hasInvalidChars(aControl) {
//create a regular expression literal to identify invalid characters
var reg = /[^a-zA-Z0-9's'&'!'?'.',_-]/;
//use the regular expression method - test - to check whether the string contains invalid characters
return reg.test(trim(aControl.value));
}
// removes starting and trailing white spaces
function trimBlur(strToTrim) {
"use strict";
//create a regular expression literal to identify leading and trailing spaces
var reg = /^'s+|'s+$/g;
//use the string method - replace - to remove leading and trailing spaces
return strToTrim.replace(reg, "");
}
// checks whether an input control is empty (i.e., the user failed to enter a required input)
// note: it uses the trim method (see above) to eliminate white spaces before checking the input
function isEmptyBlur(aControl) {
"use strict";
return (trimBlur(aControl).length === 0) ? true : false;
}
function checkProperty(aValue) {
"use strict";
alert(aValue);
if (isEmptyBlur(aValue)) {
document.getElementById("propertyErr").style.visibility='visible';
document.getElementById("propertyid").style.borderColor='#FF3300';
document.getElementById("propertyErr").innerHTML="*Required";
return false;
} else {
document.getElementById("propertyErr").style.visibility='hidden';
document.getElementById("propertyid").style.borderColor='';
return true;
}
}
function checkForm(aValue) {
alert (aValue.propertyid);
if (isEmpty(aValue.propertyid)) {
document.getElementById("propertyErr").style.visibility='visible';
document.getElementById("propertyid").style.borderColor='#FF3300';
document.getElementById("propertyErr").innerHTML="*Required";
return false;
} else return true;
}
提前感谢您的提示、建议和想法..
此问题已通过更改为使用来修复: if (isEmpty(aValue.propertyid.value))谢谢!!!
您要检查名为"propertyid"的<select>
标签吗?
function checkForm(aForm) {
if ( !aForm.propertyid.value ) { // so replace the line with this
document.getElementById("propertyErr").style.visibility='visible';
document.getElementById("propertyid").style.borderColor='#FF3300';
document.getElementById("propertyErr").innerHTML="*Required";
return false;
} else {
console.log( "submited" );
return false;
}
}