我有多个文字输入,我已经为他们添加了一个名为' 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并不擅长,所以就我而言,它可能是任何事情。 有什么想法吗?
答案 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到达它时的差异....