onchange()没有在firefox中触发

时间:2015-05-15 12:41:46

标签: javascript firefox

这是jsfiddle:http://jsfiddle.net/xpkFf/330/ 如果您打开对话框,输入用户名和密码,按下按钮并获得Firefox的“记住我的密码”提示,如果点击下拉列表导致提示,则第一次从下拉列表中选择一个选项时,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
});

2 个答案:

答案 0 :(得分:2)

请改用on input。 Chrome和Safari的处理方式与Firefox不同change。但是,input事件的处理方式相同。

&#13;
&#13;
$('#open').click(function() {
    $('#dialog').dialog('open');

});

$('#ih8ff').on("input change",function(){
alert("changed");
});

$('#dialog').dialog({
    autoOpen: false,
    modal: false
});
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

终于找到了一个黑客围绕它。这是一个显示它的jsfiddle:http://jsfiddle.net/xpkFf/332/ 在测试之后,除了鼠标之外单击下拉列表后所有事件都被取消了,所以我只是捕获了鼠标的坐标并确保我在选择框中。我将错误提交给了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;
        }
    }
});