一个奇怪的家伙在这里。
我有一个包含多个字段和一个提交按钮的表单。除电子邮件字段外,所有字段最初都设置为禁用。
我有一个方法可以运行并检查电子邮件字段的更改。如果它发生变化,则启用所有其他字段。这在 firefox、chrome 和 internet explorer 7/8/9 中完美运行,但在 10 中它不会如图所示运行。
在 IE10 中,所有应该禁用的字段都是,但未灰显的电子邮件字段的行为就像它的只读一样,并且不允许输入或聚焦。
我最初使用 .prop() 方法来更改禁用状态,但一些较旧的 IE 版本存在问题,因此我改用了 attr() 和 removeAttribute() 方法。任何想法表示赞赏。
下面添加了解决方案 - 谢谢大家!
<form id="query_form" class="form-inline" enctype="multipart/form-data" action="" method="post">
<input type="text" class="input-large" placeholder="email" id="email" name="email" value="" />
<input type="text" class="input-small" placeholder="start date" id="sd" name="sd" value="" disabled="disabled"/>
<input type="text" id="ed" class="input-small" placeholder="end date" name="ed" value="" disabled="disabled"/>
<button type="submit" class="btn" id="run_query" name="run_query" disabled="disabled">Run Query</button>
</form>
function check_required_fields(){
var email = $.trim($("#email").val());
if(email.length > 0){
$("#query_form").find(":input").not("#email").each(function() {
$(this).removeAttr('disabled');
});
}else{
$("#query_form").find(":input").not("#email").each(function() {
$(this).attr('disabled', true);
});
}
}
$(document).ready(function(){
var timer;
$("#email").on("change keyup paste", function () {
clearTimeout(timer);
timer = setTimeout(function () {
check_required_fields()
}, 0);
}).triggerHandler('change');
});
最后,我正在使用 Jquery 1.8.3 并使用引导程序的另一条信息。firebug 中的控制台没有显示任何类型的错误,IE10 中的开发人员工具也没有。
最后一块拼图。
在另一个脚本中,我使用相同的代码进行一次编辑,它在两个字段上运行。因此它看起来如下:
<form id="query_form" enctype="multipart/form-data" action="" method="post">
<input type="text" class="input-large" placeholder="email" id="email" name="email" value="" />
<select id="qt" name="qt">
<option selected="selected" value="">select query type...</option>
<option value="taxon_group">species group</option>
<option value="site_name">site name</option>
<option value="taxon_name">species name</option>
</select>
<input type="text" id="ed" class="input-large" placeholder="end date" name="ed" value="" disabled="disabled"/>
<button type="submit" class="btn" id="run_query" name="run_query" disabled="disabled">Run Query</button>
</form>
function check_required_fields(){
var email = $.trim($("#email").val());
var query_type = $("#qt").val();
if(email.length > 0 && query_type.length > 0){
$("#query_form").find(":input").not("#email, #qt").each(function() {
$(this).removeAttr('disabled');
});
}else{
$("#query_form").find(":input").not("#email, #qt").each(function() {
$(this).attr('disabled', 'disabled');
});
}
}
$(document).ready(function(){
var timer;
$("#email, #qt").on("change keyup paste", function () {
clearTimeout(timer);
timer = setTimeout(function () {
check_required_fields()
}, 0);
}).triggerHandler('change');
});
除了在 IE10 中每次按键后电子邮件字段失去焦点外,一切都很好。任何想法为什么?它不会发生在其他脚本中,并且仅将相同的功能应用于电子邮件字段。