【问题标题】:Jquery Onchange event not being triggered未触发 Jquery Onchange 事件
【发布时间】:2013-01-30 15:13:44
【问题描述】:

我有一个 onChange 事件,但在更改时它不会被触发。我已验证我正确调用了这些字段。

    $("#SRIEquipmentDDL").change(function() {
    if ($(this).val() == "3") {
        $("#SRILift").show();
    } else {
        $("#SRILift").hide();
    }
});

<div id="SRIEquipment">
            <div class="TextField">Equipment:</div>
            <div class="InputField">
                <select name="SRIEquipmentDDL" id="SRIEquipmentDDL" class="DropDownField">
                    <option value="0" <?php if ($_POST['SRIEquipmentDDL'] == "0") {echo "selected='selected'";} ?> >Select Chair Type</option>
                    <option value="1" <?php if ($_POST['SRIEquipmentDDL'] == "1") {echo "selected='selected'";} ?> >Manual Wheelchair</option>
                    <option value="2" <?php if ($_POST['SRIEquipmentDDL'] == "2") {echo "selected='selected'";} ?>>Power Wheelchair</option>
                    <option value="3" <?php if ($_POST['SRIEquipmentDDL'] == "3") {echo "selected='selected'";} ?>>Lift Chair</option>
                    <option value="4" <?php if ($_POST['SRIEquipmentDDL'] == "4") {echo "selected='selected'";} ?>>Scooter</option>
                    <option value="5" <?php if ($_POST['SRIEquipmentDDL'] == "5") {echo "selected='selected'";} ?>>Lifts</option>
                    <option value="6" <?php if ($_POST['SRIEquipmentDDL'] == "6") {echo "selected='selected'";} ?>>CPM</option>
                    <option value="8" <?php if ($_POST['SRIEquipmentDDL'] == "7") {echo "selected='selected'";} ?>>Walker</option>                          
                    <option value="9" <?php if ($_POST['SRIEquipmentDDL'] == "8") {echo "selected='selected'";} ?>>Other</option>
                </select>
            </div>
        </div>
        <div id="SRILift">
            <div class="TextField">Lift Type:</div>
            <div class="InputField">
                <select name="SRILiftTypeDDL" id="SRILiftTypeDDL" class="DropDownField">
                    <option value="0" <?php if ($_POST['SRILiftTypeDDL'] == "0") {echo "selected='selected'";} ?> >Select Lift Type</option>
                    <option value="1" <?php if ($_POST['SRILiftTypeDDL'] == "1") {echo "selected='selected'";} ?> >Stair Lift</option>
                    <option value="2" <?php if ($_POST['SRILiftTypeDDL'] == "2") {echo "selected='selected'";} ?>>Porch Lift</option>
                    <option value="3" <?php if ($_POST['SRILiftTypeDDL'] == "3") {echo "selected='selected'";} ?>>Outside Vehicle Lift</option>
                    <option value="4" <?php if ($_POST['SRILiftTypeDDL'] == "4") {echo "selected='selected'";} ?>>Inside Vehicle Lift</option>
                    <option value="5" <?php if ($_POST['SRILiftTypeDDL'] == "5") {echo "selected='selected'";} ?>>Ceiling Lift</option>                     
                    <option value="6" <?php if ($_POST['SRILiftTypeDDL'] == "6") {echo "selected='selected'";} ?>>Other</option>
                </select>
            </div>
        </div>

【问题讨论】:

  • 页面加载后是否绑定onChange事件?
  • 看起来您正试图在元素存在之前绑定事件处理程序。请阅读jQuery tutorial 以了解如何正确设置 jQuery。也看看这个问题:stackoverflow.com/q/14028959/218196.
  • 是的。 $(document).ready(function (){ 我在 jquery 文档开头的标题下有这个。
  • 请定义“更改时”。如果您选择了一个项目,然后单击页面上的其他位置,将焦点转移到另一个字段,会发生什么吗?

标签: php jquery onchange


【解决方案1】:

试试这样的:

 $('#yourSelectId').change(function() {
    var selectedVal = $('#yourSelectId option:selected').attr('value');
});

确保您的代码位于就绪函数中 - http://api.jquery.com/ready/ 或者是在创建选择的 HTML 之后

【讨论】:

  • $(document).ready(function (){ 一开始我只是在谈论触发它的原因。我还有其他类似的 onChange 事件可以正常工作,只是这个不工作。
  • 我不是,这很奇怪。如果没有作品或其中一项作品,我将尝试几种不同的方法。
【解决方案2】:

您面临的问题是,当它们是focused 时,选择框通常不会触发更改事件。

由于您使用的是 JQuery,解决方案是将.click().blur() 结合使用,以触发onchange 事件。

我找到了这个 Fiddle,它展示了你想要做什么:

http://jsfiddle.net/acrashik/wLWMc/

【讨论】:

    【解决方案3】:

    你能试试jquery的bind()方法吗?? 如果它不起作用,请尝试检查您内部的值 选择 ...可能有 INTEGERS 尝试然后 将您的条件更改为:

    if ($(this).val() == 3) {

    【讨论】:

    • .change.bind 只需在内部调用 .on。切换方法不会有什么不同。
    • .bind 自 1.7 起已弃用,请改用 .on
    【解决方案4】:

    尝试在您的代码中使用 live

     $("#SRIEquipmentDDL").on('change',function() {
                if ($(this).val() == "3") {
                    $("#SRILift").show();
                } else {
                    $("#SRILift").hide();
                }
            });
    

    【讨论】:

    • .live 自 1.7 起已被弃用,请改用 .on
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多