首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript中单击按钮时,按钮文本和属性值会发生变化

在JavaScript中单击按钮时,按钮文本和属性值会发生变化
EN

Stack Overflow用户
提问于 2013-12-02 22:39:31
回答 1查看 276关注 0票数 0

我有一个按钮的输入类型。Button是这样的:

代码语言:javascript
运行
复制
<h2>RFI Status Type</h2>

<input type="button" class="btn btn-small btn-primary" value="New RFI Status" data-bind="click: $root.createRFIStatusType" />
<hr />
<table class="search">
    <tr  class="table_title"> 
        <th>RFI Status Type Name</th>
        <th>Sequence</th>
        <th>Active Status</th>
    </tr>
    <tbody data-bind="foreach: RFIStatusTypes">
        <tr  class="table_data">
            <td><a data-bind="text: RFIStatusTypeName, click: $parent.editRFIStatusType">Edit</a></td>
            <td data-bind="text: Sequence"></td>
            <td>
                <input type="button" id="chkActiveStatus" data-bind = "value: activeStatus(ActiveStatus) "/>
            </td>
        </tr>
    </tbody>
</table>

JavaScript函数activeStatus(ActiveStatus)为:

代码语言:javascript
运行
复制
<script>
    function activeStatus(ActiveStatus)
    {
        if (ActiveStatus == 0) {
            return "Deactivate";

        }

        else {
            return "Activate";
        }
    }
</script>

它所做的是,它获取ActiveStatus的值,这是我的数据库表中的一列。ActiveStatus的值为1或0。当取值为0时,返回按钮的值为"Deactivate",否则为"Activate“。

当我单击按钮时,我希望将按钮值从"Activate“更改为"Deactivate”,反之亦然,同时,相应的ActiveStatus值也将更改。如果ActiveStatus为0,它将变为1;如果为1,则将变为0。

我该怎么做呢?我已经试过很多次了,但都失败了。我在我的输入中尝试了一个onclick事件,但它不起作用。

EDIT-1:我已经在视图页面中编写了JavaScript代码,并对其进行了一些修改,但仍然没有得到想要的结果。它是这样的:

代码语言:javascript
运行
复制
<script>
function activeStatus(ActiveStatus)
{
    if (ActiveStatus == 0) {
        ActiveStatus++;
        return "Deactivate";

    }

    else if (ActiveStatus == 1)
    {
        ActiveStatus--;
        return "Activate";
    }


}
</script>

EDIT-2:很多人都提到我在这里没有包含knockout.js代码。下面是RFIStatusType.js代码:

代码语言:javascript
运行
复制
var RFIStatusTypesViewModel = function () {
var self = this;
var url = "/RFIStatusType/GetAllRFIStatusType";
var refresh = function () {
    $.getJSON(url, {}, function (data) {
        self.RFIStatusTypes(data);
    });
};

// Public data properties
self.RFIStatusTypes = ko.observableArray([]);

// Public operations
self.createRFIStatusType = function () {
    window.location.href = '/RFIStatusType/RFIStatusTypeCreateEdit/0';
};

self.editRFIStatusType = function (RFIStatusType) {
    window.location.href = '/RFIStatusType/RFIStatusTypeCreateEdit/' + RFIStatusType.RFIStatusTypeID;
};
self.removeRFIStatusType = function (RFIStatusType) {
    // First remove from the server, then from the UI
    if (confirm("Are you sure you want to delete this RFI Status?")) {
        var id = RFIStatusType.RFIStatusTypeID;
        $.ajax({ type: "DELETE", url: 'RFIStatusType/DeleteRFIStatusType/' + id })
            .done(function () { self.RFIStatusTypes.remove(RFIStatusType); });
    }
}
refresh();
};
ko.applyBindings(new RFIStatusTypesViewModel());   

编辑-3:现在我的按钮是:

代码语言:javascript
运行
复制
<input type="button" id="chkActiveStatus" data-bind="value: activeStatus(ActiveStatus), click: toggleActiveStatus(ActiveStatus)" />

我的JavaScript重写在这里:

代码语言:javascript
运行
复制
<script>
function activeStatus(ActiveStatus)
{
    if (ActiveStatus == 0)
    {
        alert("ActiveStatus is now 0");
        return "Activate";
    }

    else if (ActiveStatus == 1)
    {
        alert("ActiveStatus is now 1");
        return "Deactivate";
    }
}

function toggleActiveStatus(ActiveStatus)
{
    if (ActiveStatus == 0)
    {
        ActiveStatus++;
        alert("ActiveStatus is now 1");
        return ActiveStatus;
    }
    else if (ActiveStatus == 1)
    {
        ActiveStatus--;
        alert("ActiveStatus is now 0");
        return ActiveStatus;
    }
    else alert("Error");
}
</script> 

但还是不走运。

EN

回答 1

Stack Overflow用户

发布于 2013-12-03 00:28:26

由于Govan似乎是最正确的,因此您不能仅在数据绑定的knockout概念中获取全局函数。‘button...which’只会设置与值无关的值。data- event...but =‘click : activeStatus’是您希望处理单击的方式,需要在声明对象类型的地方声明函数activeStatus(),该对象类型定义了RFIStatusTypes的每个实例。

提供更多的knockout代码,这个示例可能会神奇地显示更多信息。

就我个人而言,我闻到了一个自定义bindingHandler的很好的例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20330886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档