2016-01-28 60 views
0

我想触发更改事件当页面加载我试图做$("#formtype").change();,但它不工作如何触发的onchange当页面加载

<div class="form-group"> 
    <select name="form" id="formtype" class="form-control"> 
    <option value="A">Form A</option> 
    <option value="B">Form b</option> 
</select> 

<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> 
<script type="text/javascript"> 
    $('#formtype').on('change', function() { 
    // alert(this.value); // or $(this).val() 
    if(this.value == "A") { 
     $('#form1').show(); 
     $('#form2').hide(); 
    } else { 
     $('#form1').hide(); 
     $('#form2').show(); 
    } 
    }); 
</script> 
+0

为什么要触发更改事件?你想达到什么目的? – David

回答

0

不要试图给DOM欺骗,以为事件已经发生。如果你想在页面加载时执行代码,只需执行它。事情是这样的:

// define the function 
var toggleElements = function() { 
    if($('#formtype').val() == "A") { 
     $('#form1').show(); 
     $('#form2').hide(); 
    } else { 
     $('#form1').hide(); 
     $('#form2').show(); 
    } 
}; 

// set the handler 
$('#formtype').on('change', toggleElements); 

// execute the function when the page loads 
$(document).ready(toggleElements); 
+0

但是当页面加载出现的表单2的id,并且所选择的值的形式为1 –

+0

@AhmedImadTouil:我在复制/粘贴代码时出错。现在已经得到纠正。 – David

0

为什么不把你想要运行的代码在一个函数中,然后调用该函数?像这样将工作:

$('#formtype').on('change', function() { 
    doStuff(); 
}); 

function doStuff() { 
    if($('#formtype').val() == "A") { 
    $('#form1').show(); 
    $('#form2').hide(); 
    } else { 
    $('#form1').hide(); 
    $('#form2').show(); 
    } 
} 

$(document).ready(function() { 
    doStuff(); 

}) 

看到它在这里工作:https://jsfiddle.net/5jLx6q8b/

+0

2解决方案同样的问题:当页面加载Div 2的形式2出现,并选择的值的形式2 –

+0

https://jsfiddle.net/5jLx6q8b/2/ –

+0

你没有提供足够的HTML在你的问题,你需要将'this'改为你想要与之交互的元素,在这种情况下'$('#formtype')' –

1

尝试执行文档准备事件的功能在这个代码:

$("#formtype").trigger('change'); 
0

您可以在事件

$('#formtype').on('change', function() { }).trigger("change"); 

的结合直接去做
$('#formtype').on('change', function() { }).change();