Javascript Can';t注册a内单选按钮的更改处理程序<;标签>;标签
我目前正在从事一个ASP.NET MVC项目。由于我正在使用的其中一个组件的限制,我的单选按钮需要放在标签标签内。但是,当我试图在所述单选按钮上注册更改处理程序时,该处理程序从未被调用。粗略地看了一眼类似的问题,我就被绞死了 以下是JavaScript代码:Javascript Can';t注册a内单选按钮的更改处理程序<;标签>;标签,javascript,jquery,html,asp.net,asp.net-mvc,Javascript,Jquery,Html,Asp.net,Asp.net Mvc,我目前正在从事一个ASP.NET MVC项目。由于我正在使用的其中一个组件的限制,我的单选按钮需要放在标签标签内。但是,当我试图在所述单选按钮上注册更改处理程序时,该处理程序从未被调用。粗略地看了一眼类似的问题,我就被绞死了 以下是JavaScript代码: $(document).ready(function () { $("input[name=registrationType]").click(function() { alert("It works!");
$(document).ready(function () {
$("input[name=registrationType]").click(function() {
alert("It works!");
});
});
以下是相关的cshtml:
<div class="radio">
<label for="registrationType1">@Html.RadioButtonFor(model => model.registrationType, "type1", new { @id = "registrationType1", @required = "required" }) Option 1</label>
</div>
<div class="radio">
<label for="registrationType2">@Html.RadioButtonFor(model => model.registrationType, "type2", new { @id = "registrationType2", @required = "required" }) Option 2</label>
</div>
@(model=>model.registrationType,“type1”,新的{@id=“registrationType1”,@required=“required”})选项1
@(model=>model.registrationType,“type2”,新的{@id=“registrationType2”,@required=“required”})选项2
我的问题是,我可以对jQuery代码进行哪些更改来注册更改处理程序?将单选按钮从标签中取出不是一个选项,不幸的是,正如我所知,这将立即解决问题
任何帮助都将不胜感激
编辑:根据要求,以下是呈现的HTML:
<div class="radio">
<label for="registrationType1"><input class="registrationType" data-val="true" data-val-required="Please indicate your registration type" id="registrationType1" name="registrationType" required="required" type="radio" value="type1" /> Option 1</label>
</div>
<div class="radio">
<label for="registrationType2"><input class="registrationType" id="registrationType2" name="registrationType" required="required" type="radio" value="type2" />Option 2</label>
</div>
选择1
选择2
一种可能的解决方案是将事件处理程序放在父元素上(例如围绕所有单选按钮的
)。然后,您可以通过检查事件
对象的目标
属性来检测单击的特定元素。这还有一个优点,即只需要设置一个事件处理程序,这有时更容易编码,更便于内存管理
有关检查target
属性(包括某些IE兼容性)的更多详细信息,请参见:
这里有一个简单的解释,解释为什么将事件处理程序放在父级上甚至可以起作用:我马上发布呈现的HTML。我用标签标签外的单选按钮试过了,效果很好。我对Razor或任何语法都不太熟悉,但你到底把name属性放在了哪里?将有助于查看输出的实际HTML。另外,
标签
包含字段名称(因此,是字符串),而不是字段本身:)您的单选按钮不应位于
@lessugar内,我完全理解,而且我对必须这样做感到不高兴。但是,由于前端框架的原因,我被要求以这种方式设置它们。似乎很有效。看一看:。确保在运行脚本之前加载了jQuery。查看控制台日志中的错误。我将在明天登录时尝试此功能。谢谢