1

当我通过 Javascript 更改值时,jquery 中的 .change 调用不起作用。

例如:

 $(document).ready(function () {
     $(function () {
         $("select#product").change(function () {
             if (document.all("fatcaSearchDO.bankId").disabled.value = true) {
                 fnFieldEnableClass(document.all("fatcaSearchDO.bankId"));
             }
             $.ajax({
                 type: 'GET',
                 url: 'ViewHistoryDataAction.do',
                 data: {
                     product: $(this).val()
                 },
                 dataType: 'JSON',
                 cache: false,
                 success: function (j) {
                     var options = '';
                     for (var k = 0; k < j.length; k++) {
                         options += '<option value="' + j[k] + '">' + j[k] + '</option>';
                     }
                     $("select#BankID").html(options);
                 }
             });
         });
     });
 });




<html:select name="ViewHistoryForm" property="fatcaSearchDO.bankId" styleClass="login-textbox" onchange="fnGlobalChange();" onclick="checkRadio('1')" onfocus = "checkRadio('1')" styleId="BankID" style="width=250">

<html:select name="ViewHistoryForm" property="fatcaSearchDO.product" styleClass="login-textbox" onchange="fnGlobalChange();" onclick="checkRadio('1')" onfocus = "checkRadio('1')" styleId="product" style="width=250">

在这里,当我尝试更改“产品”的下拉菜单时,它的调用操作和相应的银行 ID 值都会被填充。现在,例如,当我尝试通过 javascript 更改“产品”的值时

<input type="button" onclick="changeProd()">

function changeProd(){
    document.all("fatcaSearchDO.product").value='CC';

}

更改功能不起作用。

4

3 回答 3

1

当您通过 javascript 更改输入字段的值时,不会触发 change 事件。

您需要手动触发更改事件

喜欢

$("#fatcaSearchDO.product").trigger('change')

前任:

function changeProd(){
    $("#fatcaSearchDO.product").val('CC').trigger('change');
}
于 2013-04-18T09:47:57.563 回答
0
$(document).ready(function() {
  // Handler for .ready() called.
});

相当于调用:

$(function() {
     // Handler for .ready() called.
});

请使用其中一种。

于 2013-04-18T09:50:29.307 回答
0

为什么不把里面的匿名函数change变成一个单独定义的函数,所以你可以这样做:

function changeHandler(element) {
  // code code code
  value = element.val();
}

$(something).change(function() {
  changeHandler($(this));
});

// then when changing value with JS
var element = ... // select the element with javascript here
element.value='CC';
changeHandler($(element)); // just call the function everytime the value gets changed
于 2013-04-18T10:03:43.033 回答