表单下拉onchange事件无效

时间:2017-07-16 17:53:43

标签: javascript php jquery codeigniter

我是Codeigniter的新手,我有一个form_dropdown,我写了一个javascript函数,根据下拉列表中的选定值设置文本框值。这是我的代码,但它不起作用:

<?php echo form_dropdown('allalerts', $alert_list, set_value('allalerts', $alert_list), array('id' => 'allalerts','class' => 'selectpicker', 'onchange' => 'set_alert_name($(this))')); ?>

<script type="text/javascript">
function set_alert_name(data) {
    document.getElementById ($alertname['alertname']).value = data.value;
}   
</script>   

这是正确的方法,还是有另一种方法? 我尝试了以下jquery代码,但也没有用:

<?php echo form_dropdown('allalerts', $alert_list, set_value('allalerts', $alert_list), array('id' => 'allalerts','class' => 'selectpicker')); ?>

<script type="text/javascript">
$(document).ready(function () {
    $("#allalerts").change(function () {
        var selectedText2 =  $("#allalerts option:selected").text();
        $('[name="alertname"]').val(selectedText2);
    });
});
</script>   

3 个答案:

答案 0 :(得分:0)

有很多不同的方法可以做到。

$("#allalerts").change(function () {
    var selectedText2 = this.value;
   $('[name="alertname"]').val(selectedText2);
});

// Second Technique.
$(function() {
    $("#allalerts").change(function() {
         var selectedText2 = $('option:selected', this).text();
         $('[name="alertname"]').val(selectedText2);
    });
});

答案 1 :(得分:0)

试试这段代码:

<?php echo form_dropdown('allalerts', $alert_list, set_value('allalerts', $alert_list), array('id' => 'allalerts', 'class' => 'selectpicker')); ?>

<input type="text" name="alert_name" value="">

<script type="text/javascript">
$(document).ready(function(){
    $(document).on('change','#allalerts',function(){
        var temp_name = $("select[name='allalerts'] option:selected").text();
        $("input[name='alert_name']").val(temp_name);
    });
});
</script>

请注意,form_dropdown中的'onchange'数组已被删除,因此事件处理程序在jQuery中声明。

注意$(documnt).on('change','#allalerts',function(){它是动态添加到网页的DOM,否则jQuery不会识别它。

答案 2 :(得分:0)

此代码适用于我:

<?php echo form_dropdown('allalerts', $alert_list, set_value('allalerts', $alert_list), array('id' => 'allalerts','class' => 'selectpicker', 'onchange'=>'changeAlert($(this));')); ?>

<script type="text/javascript">
function changeAlert(obj)
{
    var selectedText = obj.children(':selected').text();
    $('[name="alertname"]').val(selectedText);
}
</script>