Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t注册a内单选按钮的更改处理程序<;标签>;标签_Javascript_Jquery_Html_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript Can';t注册a内单选按钮的更改处理程序<;标签>;标签

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!");

我目前正在从事一个ASP.NET MVC项目。由于我正在使用的其中一个组件的限制,我的单选按钮需要放在标签标签内。但是,当我试图在所述单选按钮上注册更改处理程序时,该处理程序从未被调用。粗略地看了一眼类似的问题,我就被绞死了

以下是JavaScript代码:

$(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。查看控制台日志中的错误。我将在明天登录时尝试此功能。谢谢