Jquery .change函数无法通过javascript工作

时间:2013-04-18 09:38:54

标签: javascript json jquery

当我通过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">

在这里,当我尝试更改&#34;产品&#34;它的调用操作和相应的银行ID值已填充。现在,当我试图改变&#34;产品&#34;的价值时通过javascript,例如

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

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

}

更改功能无效。

3 个答案:

答案 0 :(得分:1)

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

您需要手动触发更改事件

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

例如:

function changeProd(){
    $("#fatcaSearchDO.product").val('CC').trigger('change');
}

答案 1 :(得分:0)

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

相当于调用:

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

请使用其中一种。

答案 2 :(得分: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