onchange() 不在 firefox 中触发
onchange() not firing in firefox
这是 jsfiddle:http://jsfiddle.net/xpkFf/330/
如果您打开对话框,输入用户名和密码,按下按钮并得到 Firefox 的 "remember my password" 提示,如果单击下拉菜单导致出现提示,那么当您第一次从下拉菜单中选择一个选项时,onchange 将不起作用解雇。有人知道解决办法吗?
编辑:Jsfiddle 似乎已关闭,如果有人可以重现我的问题,这里有一个 jsbin http://jsbin.com/wecasehanu/1/
HTML
<div id="dialog">
<form autocomplete="off">
<input id="username" type="text"/>
<input id="password" type="password"/>
<button type="submit" style="height:30px;width:30px;"/>
</form>
</div>
<a href="#" id="open">Open dialog</a>
<select id="ih8ff">
<option>1</option>
<option>2</option>
</select>
Javascript
$('#open').click(function() {
$('#dialog').dialog('open');
});
$('#ih8ff').change(function(){
alert("changed");
});
$('#dialog').dialog({
autoOpen: false,
modal: false
});
改用on input
。 Chrome 和 Safari 处理 change
的方式与 Firefox 不同。但是,input
个事件的处理方式相同。
$('#open').click(function() {
$('#dialog').dialog('open');
});
$('#ih8ff').on("input change",function(){
alert("changed");
});
$('#dialog').dialog({
autoOpen: false,
modal: false
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="dialog">
<form autocomplete="off">
<input id="username" type="text"/>
<input id="password" type="password"/>
<button type="submit" style="height:30px;width:30px;"/>
</form>
</div>
<a href="#" id="open">Open dialog</a>
<select id="ih8ff">
<option>1</option>
<option>2</option>
</select>
终于找到了破解方法。这是一个显示它的 jsfiddle:http://jsfiddle.net/xpkFf/332/
经过测试,除了mouseup之外,点击下拉菜单后所有事件都被取消了,所以我只是捕获了鼠标的坐标并确保我在select框中。我已将错误提交给 mozilla,希望他们能修复它。
代码
$('#open').click(function() {
$('#dialog').dialog('open');
});
var ddstate;
$('#ih8ff').change(function(){
alert("changed");
});
$('#ih8ff').click(function(){
if(ddstate==undefined)
ddstate=true;
});
$('#dialog').dialog({
autoOpen: false,
modal: false
});
$(window).mouseup(function(e) {
if(ddstate){
var x= e.clientX;
var y= e.clientY;
if(x > 85 && x < 119 && y > 42 && y < 62)
{
$("#ih8ff").val("2");
$('#ih8ff').change();
ddstate=false;
}
}
});
这是 jsfiddle:http://jsfiddle.net/xpkFf/330/ 如果您打开对话框,输入用户名和密码,按下按钮并得到 Firefox 的 "remember my password" 提示,如果单击下拉菜单导致出现提示,那么当您第一次从下拉菜单中选择一个选项时,onchange 将不起作用解雇。有人知道解决办法吗?
编辑:Jsfiddle 似乎已关闭,如果有人可以重现我的问题,这里有一个 jsbin http://jsbin.com/wecasehanu/1/
HTML
<div id="dialog">
<form autocomplete="off">
<input id="username" type="text"/>
<input id="password" type="password"/>
<button type="submit" style="height:30px;width:30px;"/>
</form>
</div>
<a href="#" id="open">Open dialog</a>
<select id="ih8ff">
<option>1</option>
<option>2</option>
</select>
Javascript
$('#open').click(function() {
$('#dialog').dialog('open');
});
$('#ih8ff').change(function(){
alert("changed");
});
$('#dialog').dialog({
autoOpen: false,
modal: false
});
改用on input
。 Chrome 和 Safari 处理 change
的方式与 Firefox 不同。但是,input
个事件的处理方式相同。
$('#open').click(function() {
$('#dialog').dialog('open');
});
$('#ih8ff').on("input change",function(){
alert("changed");
});
$('#dialog').dialog({
autoOpen: false,
modal: false
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="dialog">
<form autocomplete="off">
<input id="username" type="text"/>
<input id="password" type="password"/>
<button type="submit" style="height:30px;width:30px;"/>
</form>
</div>
<a href="#" id="open">Open dialog</a>
<select id="ih8ff">
<option>1</option>
<option>2</option>
</select>
终于找到了破解方法。这是一个显示它的 jsfiddle:http://jsfiddle.net/xpkFf/332/ 经过测试,除了mouseup之外,点击下拉菜单后所有事件都被取消了,所以我只是捕获了鼠标的坐标并确保我在select框中。我已将错误提交给 mozilla,希望他们能修复它。
代码
$('#open').click(function() {
$('#dialog').dialog('open');
});
var ddstate;
$('#ih8ff').change(function(){
alert("changed");
});
$('#ih8ff').click(function(){
if(ddstate==undefined)
ddstate=true;
});
$('#dialog').dialog({
autoOpen: false,
modal: false
});
$(window).mouseup(function(e) {
if(ddstate){
var x= e.clientX;
var y= e.clientY;
if(x > 85 && x < 119 && y > 42 && y < 62)
{
$("#ih8ff").val("2");
$('#ih8ff').change();
ddstate=false;
}
}
});