Jquery $('input[name=""]').change(函数不会在 Chrome 中触发,除非它之后有未捕获的错误
Jquery $('input[name=""]').change(function WILL NOT FIRE in Chrome unless there is an uncaught error after it
所以,这是我编写的一个脚本,它使一些输入依赖于来自另一个输入的肯定回答。在这种情况下,'parent' 输入是一个单选按钮。
您可以看到它在文档准备就绪时隐藏输入的父 div,然后在触发逻辑之前等待更改相关选项。
如果您查看 javascript 底部附近的评论,您就会明白是什么一直困扰着我。如果我删除 if 语句,则不会触发 change 函数。如果我设置变量以便控制台中不会记录错误,则不会触发更改事件。
如果我将 jquery 选择器更改为 $('select').change...
事件将触发,但显然不会对单选按钮起作用。将其更改为 $('input').change...
也失败。
<script type="text/javascript"><!--
$(function(ready){
$('#input-option247').parent().hide();
$('#input-option248').parent().hide();
$('#input-option249').parent().hide();
$('#input-option250').parent().hide();
$('#input-quantity').attr('type', 'hidden');
$('#input-quantity').parent().hide();
$('input[name="option\[230\]"]').change(function() {
if (this.value == '21') { //If yes, display dependent options
$('#input-option247').parent().show().addClass('required');
$('#input-option248').parent().show().addClass('required');
$('#input-option249').parent().show().addClass('required');
$('#input-option250').parent().show().addClass('required');
} else if (this.value == '22') { //If no, hide dependent options
$('#input-option247').parent().hide().removeClass('required');
$('#input-option248').parent().hide().removeClass('required');
$('#input-option249').parent().hide().removeClass('required');
$('#input-option250').parent().hide().removeClass('required');
}
});
//I don't know why this is necessary, but the input.change() event WILL NOT FIRE unless it's present. If I set the variable, then it breaks the change function above. If it's not here, it breaks the change function above. I'm stumped.
if(poop){}
});//--></script>
我真的希望有人能看到我疲惫的大脑看不到的相当明显的东西。这是一个非常简单的脚本,我正在为一个看起来相当烦人的错误而烦恼。
如果您的选择器有特殊字符,您需要在这些字符前使用 \
。
$('input[name="option[230]"]')
应该是
$('input[name="option\[230\]"]')
这可能是也可能不是一个好的答案,但我设法解决了问题。我在使用此选择器触发更改事件的页面上有另一个脚本:$('select[name^="option"], input[name^="option"]').change(function() {
我最好的猜测是,这两个函数不能使用来自同一元素的单个更改事件触发。我将上面代码的功能部分移到了第二个脚本中,它似乎按预期工作。如果有人希望提供解释此行为的答案,我会接受。
所以,这是我编写的一个脚本,它使一些输入依赖于来自另一个输入的肯定回答。在这种情况下,'parent' 输入是一个单选按钮。
您可以看到它在文档准备就绪时隐藏输入的父 div,然后在触发逻辑之前等待更改相关选项。
如果您查看 javascript 底部附近的评论,您就会明白是什么一直困扰着我。如果我删除 if 语句,则不会触发 change 函数。如果我设置变量以便控制台中不会记录错误,则不会触发更改事件。
如果我将 jquery 选择器更改为 $('select').change...
事件将触发,但显然不会对单选按钮起作用。将其更改为 $('input').change...
也失败。
<script type="text/javascript"><!--
$(function(ready){
$('#input-option247').parent().hide();
$('#input-option248').parent().hide();
$('#input-option249').parent().hide();
$('#input-option250').parent().hide();
$('#input-quantity').attr('type', 'hidden');
$('#input-quantity').parent().hide();
$('input[name="option\[230\]"]').change(function() {
if (this.value == '21') { //If yes, display dependent options
$('#input-option247').parent().show().addClass('required');
$('#input-option248').parent().show().addClass('required');
$('#input-option249').parent().show().addClass('required');
$('#input-option250').parent().show().addClass('required');
} else if (this.value == '22') { //If no, hide dependent options
$('#input-option247').parent().hide().removeClass('required');
$('#input-option248').parent().hide().removeClass('required');
$('#input-option249').parent().hide().removeClass('required');
$('#input-option250').parent().hide().removeClass('required');
}
});
//I don't know why this is necessary, but the input.change() event WILL NOT FIRE unless it's present. If I set the variable, then it breaks the change function above. If it's not here, it breaks the change function above. I'm stumped.
if(poop){}
});//--></script>
我真的希望有人能看到我疲惫的大脑看不到的相当明显的东西。这是一个非常简单的脚本,我正在为一个看起来相当烦人的错误而烦恼。
如果您的选择器有特殊字符,您需要在这些字符前使用 \
。
$('input[name="option[230]"]')
应该是
$('input[name="option\[230\]"]')
这可能是也可能不是一个好的答案,但我设法解决了问题。我在使用此选择器触发更改事件的页面上有另一个脚本:$('select[name^="option"], input[name^="option"]').change(function() {
我最好的猜测是,这两个函数不能使用来自同一元素的单个更改事件触发。我将上面代码的功能部分移到了第二个脚本中,它似乎按预期工作。如果有人希望提供解释此行为的答案,我会接受。