使用Jquery单击单选按钮时禁用或启用文本输入表单

时间:2017-12-02 02:48:02

标签: javascript jquery html asp.net

我有多个文字输入,我已经为他们添加了一个名为' bankinput'的课程。我有两个由asp.net助手生成的单选按钮,虽然我不认为它与此有任何关系。我已经检查了生成的html,它们分别作为ID,ID ="检查"'和' id ="草案"'。 为了完成,让我展示生成的html:

<label for="Cheque"> <input checked="checked" data-val="true" data-val-
required="The Payment Mode field is required." id="Cheque" name="IsCheque" 
type="radio" value="true">Cheque</label>
<label for="Draft"><input id="Draft" name="IsCheque" type="radio" 
 value="false"> Draft </label>

我希望在单击“检查”单选框时禁用具有上述类的文本框,并在单击“草稿”时启用。 我做了一些搜索,并找到了一些应该做的技巧:

<script type="text/javascript">  
$(document).ready(function () {

    $('#Cheque').change(function () {
        disable();
    });
    $('#Draft').change(function () {
        enable();
    });
    function disable() {
        $('.bankinput').prop('disabled', true);
    };
    function enable() {
        $('.bankinput').removeAttr('disabled');
    };

});   
</script>

问题是,它什么也没做。没有任何反应,并且除非文档加载,否则永远不会触发设置的断点。我对JS并不擅长,所以就我而言,它可能是任何事情。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

看起来喜欢asp.net助手生成的按钮是在脚本之后加载的......

尝试类似:

....
$(document).on('change', '#Cheque', function(){
     disable();
});
....

答案 1 :(得分:0)

FBBlade可能会有所作为,但这就是我最终做的事情:

    {
        "name": ".NET Core Launch (full)",
        "type": "coreclr",
        "request": "launch",
        "preLaunchTask": "build",
        // If you have changed target frameworks, make sure to update the program path.
        "program": "${workspaceFolder}/bin/Debug/netcoreapp2.0/spa.dll",
        "args": [],
        "cwd": "${workspaceFolder}",
        "stopAtEntry": false,
        "internalConsoleOptions": "openOnSessionStart",
        "launchBrowser": {
            "enabled": false
        },
        "env": {
            "ASPNETCORE_ENVIRONMENT": "Development"
        },
        "sourceFileMap": {
            "/Views": "${workspaceFolder}/Views"
        }
    },
    {
        "type": "chrome",
        "request": "launch",
        "name": "Chrome",
        "url": "http://localhost:5000",
        "webRoot": "${workspaceRoot}/wwwroot"
    }
],
"compounds": [
    {
        "name": "Full stack",
        "configurations": [".NET Core Launch (full)", "Chrome"]
    }
]

所以最大的变化是将onchange事件处理程序设置为我指定的函数。我猜这最终与FBBlade发布的相同。虽然现在我想到了,asp.net帮助器等只是简单地改变了生成的代码,但我不明白为什么会以不同的方式加载。浏览器甚至不知道html到达它时的差异....