按钮(禁用=假)条件;在某些情况下有效而在其他情况下无效

时间:2015-02-13 11:00:39

标签: javascript html twitter-bootstrap button disabled-input

我的代码有问题,当我只使用条件多年时,但是当我添加类型,名称和位置的条件时,函数不会产生预期的结果(将按钮状态更改为禁用=假)。

我使用文档事件监听器来检查用户操作:

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

}

2 个答案:

答案 0 :(得分:0)

在不知道您看到的错误是什么的情况下,这只是猜测,但是:文档中没有任何元素为type的元素,因此getElementById()正在返回{ {1}},并尝试引用null会导致错误。确保1)你使用名称type.className而不是其他东西,2)你记得在该元素中添加type属性,以及3)没有其他代码从DOM中删除该元素当id="type"运行时。

答案 1 :(得分:0)

我找到了部分答案。问题是你必须回到其中一个年份的领域并​​离开它。然后,当onblur启动时,按钮变为活动状态。

所以代码运行正常,问题是它不能像我期望的那样工作。我有很多控制台日志记录要做,但原来的问题不再存在。