由于条件原因,Javascript无法启用按钮
我有一个纯JS下面是不工作的,因为它必须满足条件,然后按钮将被启用 它可以在JSFIDLE上工作,但不能在代码中工作。 我删除了另一个条件来测试出了什么问题。我是不是遗漏了什么 JS:由于条件原因,Javascript无法启用按钮,javascript,html,javascript-events,Javascript,Html,Javascript Events,我有一个纯JS下面是不工作的,因为它必须满足条件,然后按钮将被启用 它可以在JSFIDLE上工作,但不能在代码中工作。 我删除了另一个条件来测试出了什么问题。我是不是遗漏了什么 JS: var show=document.getElementById('show'); var button=document.getElementById('sub1'); var条件={ 赖斯3:错 }; 函数setCondition3(e){ conditions.cond3=e.target.value&&
var show=document.getElementById('show');
var button=document.getElementById('sub1');
var条件={
赖斯3:错
};
函数setCondition3(e){
conditions.cond3=e.target.value&&e.target.value.length>0;
启用按钮(条件);
}
功能启用按钮(选项){
如果(选项3){
按钮。删除属性(“禁用”);
}否则{
setAttribute('disabled',true);
}
}
show.addEventListener('change',setCondition3,false);
HTML:
下单
你的细节
客户类型:
客户类型?
顾客
贸易
它可以在JSFIDLE上工作,但不能在代码中工作
这几乎总是意味着您试图在元素存在之前访问它,因为JSFIDLE(令人难以置信的惊讶)的默认设置是将所有JavaScript封装在它分配给window.onload
的函数中,这意味着它要到页面加载过程的很晚才会运行
将您的脚本
标记放在它们引用的HTML下面。通常,除非你有很强的理由去做其他事情,否则最好把你的脚本放在末尾,就在结束标记之前
以下是您的代码,在元素的HTML之后使用脚本
:
下单
您的详细信息客户类型:
客户类型?
顾客
贸易
var show=document.getElementById('show');
var button=document.getElementById('sub1');
var条件={
赖斯3:错
};
函数setCondition3(e){
conditions.cond3=e.target.value&&e.target.value.length>0;
启用按钮(条件);
}
功能启用按钮(选项){
如果(选项3){
按钮。删除属性(“禁用”);
}否则{
setAttribute('disabled',true);
}
}
show.addEventListener('change',setCondition3,false);
它可以在JSFIDLE上工作,但不能在代码中工作
这几乎总是意味着您试图在元素存在之前访问它,因为JSFIDLE(令人难以置信的惊讶)的默认设置是将所有JavaScript封装在它分配给window.onload
的函数中,这意味着它要到页面加载过程的很晚才会运行
将您的脚本
标记放在它们引用的HTML下面。通常,除非你有很强的理由去做其他事情,否则最好把你的脚本放在末尾,就在结束标记之前
以下是您的代码,在元素的HTML之后使用脚本
:
下单
您的详细信息客户类型:
客户类型?
顾客
贸易
var show=document.getElementById('show');
var button=document.getElementById('sub1');
var条件={
赖斯3:错
};
函数setCondition3(e){
conditions.cond3=e.target.value&&e.target.value.length>0;
启用按钮(条件);
}
功能启用按钮(选项){
如果(选项3){
按钮。删除属性(“禁用”);
}否则{
setAttribute('disabled',true);
}
}
show.addEventListener('change',setCondition3,false);
将其放在HTML之后是否是一种好的做法?这可能就是为什么我这么做都是错的while@DLum:是的,这就是我所说的“通常情况下,除非你有很强的理由去做其他事情,否则最好把你的脚本放在末尾,就在结束标记之前。”把它放在HTML后面是一种好的做法吗?这可能就是为什么我这么做都是错的while@DLum:是的,这就是我所说的“通常情况下,除非你有很强的理由做其他事情,否则最好将脚本放在末尾,就在结束标记之前。”
<script type = "text/javascript">
var show = document.getElementById('show');
var button = document.getElementById('sub1');
var conditions = {
cond3: false
};
function setCondition3(e) {
conditions.cond3 = e.target.value && e.target.value.length > 0;
enableButton(conditions);
}
function enableButton(options) {
if (options.cond3) {
button.removeAttribute('disabled');
} else {
button.setAttribute('disabled', true);
}
}
show.addEventListener('change', setCondition3, false);
</script>
<section id="placeOrder">
<h2>Place order</h2>
Your details
Customer Type: <select id="show" name="customerType" onchange="change(this)">
<option value="">Customer Type?</option>
<option value="ret">Customer</option>
<option value="trd">Trade</option>
</select>
<p><input type="submit" name="submit" value="Order now!" id="sub1" disabled="disabled"/></p>