为什么我的变更处理程序从未被解雇?

时间:2015-07-29 21:22:19

标签: c# jquery sharepoint-2010 onchange

我有这个jQuery,源自Gregor Primar发布的here

/ *每当boxGrandTotal发生变化时(在任何“金额”输入文本元素中输入任何金额时都会更改),如果总数之间存在差异,请禁用保存按钮* /

void

这应该随时更新boxGrandTotal,对吧?它确实正在更新,但我从未看到“进入boxGrandTotal的更改处理程序”

一个TextBox / text输入元素,其ID以“boxGrandTotal”结尾;这是它在代码隐藏中的创建方式:

main

那么,当boxGrandTotal 中的值更改时,为什么“更改”处理程序不会触发?是否仅在手动更改值时触发?如果是,那么解决方法是什么?

更新

回应kalkanbatuhan的建议,将我的代码改为:

main :: IO ()

...发出两个编译器错误,具体如下:

'System.Web.UI.WebControls.TextBox'不包含'ClientIDMode'的定义

- 和

名称空间“System.Web.UI”中不存在类型或命名空间名称“ClientIDMode”(您是否缺少程序集引用?)

更新2

BTW *,这是boxGrandTotal中值的变化方式:

mapM_

2 个答案:

答案 0 :(得分:1)

尝试这个

boxGrandTotal = new TextBox()
        {
            CssClass = "dplatypus-webform-field-input",
            ID = "boxGrandTotal",
            ClientIDMode =System.Web.UI.ClientIDMode.Static
        };

答案 1 :(得分:0)

解决方案是在分配值的代码中添加“.trigger(”change“)”,以便代替:

$('[id$=boxGrandTotal]').val(parseFloat(grandtotal).toFixed(2));

......就是这样:

$('[id$=boxGrandTotal]').val(parseFloat(grandtotal).toFixed(2)).trigger("change");

更详细地说,当值改变时必须显式触发change事件(注意附加的“.trigger()”jazz):

$(document).on("blur", '.amountbox', function (e) {
    var amount1 = $('[id$=boxAmount1]').val() != '' ? parseFloat($('[id$=boxAmount1]').val()) : 0;
    . . .
    var grandtotal = amount1 + amount2 + amount3 + amount4 + amount5;
    $('[id$=boxGrandTotal]').val(parseFloat(grandtotal).toFixed(2)).trigger("change");
});

...然后这段代码效果很好:

/* Whenever boxGrandTotal changes (which it does when any amount is entered in any of the "amount" input text elements), disable the save button if there is a discrepancy between the totals */
$(document).on("change", '[id$=boxGrandTotal]', function () {
    var savebutton = document.getElementById('[id$=btnSave]');
    var payment = $('[id$=boxPaymentAmount]').val() != '' ? parseFloat($('[id$=boxPaymentAmount]').val()) : 0;
    var total = $('[id$=boxGrandTotal]').val() != '' ? parseFloat($('[id$=boxGrandTotal]').val()) : 0;
    if (payment == null) payment = 0;
    if (total == null) total = 0;
    if (payment == total) {
        savebutton.attr("disabled", false);
        return true;
    } else {
        alert('Total and Payment Total do not match. Please enter the same amount for both values and try again!');
        //savebutton.attr("disabled", true);
        savebutton.prop("disabled", true);
        return false;
    }
});

我说“很好”而不是“令人惊叹的辉煌”,因为保存按钮没有被禁用。

相关问题