我的代码有问题,当我只使用条件多年时,但是当我添加类型,名称和位置的条件时,函数不会产生预期的结果(将按钮状态更改为禁用=假)。
我使用文档事件监听器来检查用户操作:
document.addEventListener("blur", enableSaveButton());
我有以下代码来检查何时将按钮的禁用值设置为false的条件:
function enableSaveButton() {
startyear = document.getElementById('start_year');
endyear = document.getElementById('end_year');
type = document.getElementById('type');
place = document.getElementById('place');
name = document.getElementById('name');
if (!(startyear.className === "form-group has-success")) { return; }; // works
if (!(endyear.className === "form-group has-success")) { return; }; // works
if (!(type.className === "form-group has-success")) { return; };// does not work
if (!(place.className === "form-group has-success")) { return; };// does not work
if (!(name.className === "form-group has-success")) { return; }; // does not work
document.getElementById("savebutton").disabled = false; } // this code works
startyear 和 endyear 都使用相同的功能 validateYear(year,id)(当字段onblur时)将表单组状态设置为“form-group has-success”或“form-group has-error”。
类型,名称和地方使用其他功能 faultyChars(stringen,id)来制作相同的功能结果
两者都按照目的工作(即使代码可能不是最先进的......)=)
如果我只在 enableSaveButton()函数中使用 startyear 和 endyear ,它就能完美运行。但是,如果我添加类型,地点和名称,则错误就会启动,即使它包含几乎相同的代码。有什么想法吗?所有和任何帮助表示赞赏!
以下是我提到的功能:
function validateYear(year, id){
console.log("Inne i validateYear");
var x = document.getElementById(id);
if (year === "") { x.className="form-group has-error"; return false; }
if (isNaN(year)) { x.className="form-group has-error"; return false; }
if (year.length !== 4) { x.className="form-group has-error"; return false; }
if ((year.substr(0,2) !== "19") && (year.substr(0,2) !== "20")) { x.className="form-group has-error"; return false; }
else {
x.className="form-group has-success";
enableSaveButton(year);
return true; }
}
function enableSaveButton() {
startyear = document.getElementById('start_year');
endyear = document.getElementById('end_year');
type = document.getElementById('type');
place = document.getElementById('place');
name = document.getElementById('name');
if (!(startyear.className === "form-group has-success")) { return; };works
if (!(endyear.className === "form-group has-success")) { return; }; // works
if (!(type.className === "form-group has-success")) { return; };// does not work
if (!(place.className === "form-group has-success")) { return; };// does not work
if (!(name.className === "form-group has-success")) { return; }; // does not work
document.getElementById("savebutton").disabled = false; // this code works
}
答案 0 :(得分:0)
在不知道您看到的错误是什么的情况下,这只是猜测,但是:文档中没有任何元素为type
的元素,因此getElementById()
正在返回{ {1}},并尝试引用null
会导致错误。确保1)你使用名称type.className
而不是其他东西,2)你记得在该元素中添加type
属性,以及3)没有其他代码从DOM中删除该元素当id="type"
运行时。
答案 1 :(得分:0)
我找到了部分答案。问题是你必须回到其中一个年份的领域并离开它。然后,当onblur启动时,按钮变为活动状态。
所以代码运行正常,问题是它不能像我期望的那样工作。我有很多控制台日志记录要做,但原来的问题不再存在。