【发布时间】:2012-01-02 15:04:10
【问题描述】:
您好,我正在尝试对正在处理的表单进行验证,并且我已经编写了一个函数并使用了
document.getElementById("span_trav_emer_med_insur").style.backgroundColor ='#FFFFFF';
我已经测试了我的函数来显示一个警报消息框,以便在选中“trav_emer_med_insur”时显示消息框进行调试。我在这里和无数其他网站上检查过,他们都说getElementById.style.backgroundColor = 'color'; 是实现我正在寻找的方法。我现在不明白为什么它不起作用,一切似乎都是正确的。
这是我的功能的起始相关部分:
function validatePlanTypes(form) {
var error = "";
if (form.trav_emer_med_insur.checked) {
document.getElementById("span_trav_emer_med_insur").style.backgroundColor = '#FFFFFF';
if (!form.trav_emer_med_insur_opt1.checked || !form.trav_emer_med_insur_opt2.checked || !form.trav_emer_med_insur_opt3.checked || !form.trav_emer_med_insur_opt4.checked) {
form.trav_emer_med_insur_opt1.style.backgroundColor = 'Yellow';
form.trav_emer_med_insur_opt2.style.backgroundColor = 'Yellow';
form.trav_emer_med_insur_opt3.style.backgroundColor = 'Yellow';
form.trav_emer_med_insur_opt4.style.backgroundColor = 'Yellow';
error = "You must pick a plan-type for Travel Emergency Medical insurance, areas with a problem have been highlighted yellow for you.";
}
我还没有测试完整的功能,我现在只是尝试测试第一个 if 语句,正如我所说的 if 语句有效并且 alert("bleh");如果我选中该框,将显示警报
这是我试图更改复选框周围 span 元素的背景颜色的表单的 HTML。
<p><span name="span_trav_emer_med_insur" id="span_trav_emer_med_insur" value="span_trav_emer_med_insur" style=""><input type="checkbox" name="trav_emer_med_insur" id="trav_emer_med_insur_if" value="trav_emer_med_insur_if" class="form_elements" onClick="if(this.checked){document.getElementById('trav_emer_med_options').style.display='block';}else{document.getElementById('trav_emer_med_options').style.display='none';}"/></span> <!-- Travel Emergency Medical If Box -->
<label class="form_elements" name="label_for_trav_emer_med_insur_if" id="label_for_trav_emer_med_insur_if"> Travel Emergency Medical Insurance <em>(expands when checked)</em>.</label></p>
<p>
<div id="trav_emer_med_options" name="trav_emer_med_options" class="questions_hidden">
我也试过
form.span_trav_emer_med_insur.style.backgroundColor = '#FFFFFF';
也无济于事,我真的被难住了,代码看起来和我在网上看到的一样。有人请告诉我我错过了什么。
谢谢, -肖恩
编辑 - 只是为了验证:
if (form.trav_emer_med_insur.checked) {
alert("bleh");
而不是
if (form.trav_emer_med_insur.checked) {
document.getElementById("span_trav_emer_med_insur").style.backgroundColor = '#FFFFFF';
确实有效,所以 if 语句或函数没有问题。
完整的文件在这里 - getelementbyID 不工作 - http://hotfile.com/dl/135598683/93484d4/general2.html
在此处使用 alert('bleh') 工作的完整文件 - http://hotfile.com/dl/135598746/dc9e14b/general23.html
工作 PHP 代码准确显示了我正在尝试做的事情(减去页面重新加载部分):
// Check if Emergency Medical is selected.
if (isset($_POST['trav_emer_med_insur'])) {
// If Emergency Medical is selected, then check to see if an option has been selected
if (isset($_POST['trav_emer_med_insur_opt1']) or isset($_POST['trav_emer_med_insur_opt2']) or isset($_POST['trav_emer_med_insur_opt3']) or isset($_POST['trav_emer_med_insur_opt4'])) {
$SQLString = $SQLString . "emer_med, emer_med_opt1, emer_med_opt2, emer_med_opt3, emer_med_opt4";
}
// If no option is selected display error message
else {
++$ErrCount;
$Errors[$ErrCount] = "You selected interest in Travel Emergency Medical Insurance but did not select a plan-type for it";
}
}
// Check if All-Inclusive Insurance is selected.
elseif (isset($_POST['allinc_insur'])) {
//If All-Inclusive Insurance is selected, then check to see if an option has been selected
if (isset($_POST['allinc_insur_opt1']) or isset($_POST['allinc_insur_opt2'])) {
}
//If no option is selected display error message
else {
++$ErrCount;
$Errors[$ErrCount] = "You have selected interest in All-Inclusive Insurance but did not select a plan-type for it";
}
}
// Check if Cancellation Insurance is selected.
elseif (isset($_POST['cancel_insur'])) {
}
// Check if Visitor Insurance is selected.
elseif (isset($_POST['visitor_insur'])) {
//If Visitor Insurance is selected, then check to see if country is selected.
if (isset($_POST['country_select'])) {
}
// If no country selected display error message
else {
++$ErrCount;
$Errors[$ErrCount] = "You have selected interest in Visitor Insurance but have not selected a country";
}
}
//If no insurane types selected display error.
else {
++$ErrCount;
$Errors[$ErrCount] = "You haven not selected interest in any insurance plan types";
}
while ($Count != $Target) {
if (checked($QuestionNames[0]) != 1);
++$Count;
}
【问题讨论】:
-
它在哪些浏览器中不工作?另外,您的表单标签的
name是什么? -
Chrome 不能用,只是在 FF 和 IE 中测试过,同样的。 Firebug 报告没有语法错误。
-
至 GregL - 我的表单名为 mhc_form,它通过提交按钮的 onClick"" 传递给我的函数。正如我的帖子中所述,从 if 语句中正确生成了一个警告框,因此该函数和 if 正在工作,但 style.backgroundcolor 没有响应。
-
你能在测试用例中重现问题吗? jsfiddle.net 或 jsbin.com
-
您可以在这里查看完整的文件:hotfile.com/dl/135598683/93484d4/general2.html
标签: javascript css background-color html