2013-04-30 51 views
0

下面是我试图用来使隐藏文本框可见的jQuery代码。然而,当点击文本框保持隐藏状态时,alerts都不会触发。jQuery .change事件不会触发ASP MVC CheckBoxFor

对于此复选框,我试过.click,.change.mousedown但是没有任何工作。

这里是jQuery的

$('#OverrideRegionInd').click(function() { 
    alert("here"); 
    alert($(this).is(':checked')); 
    if ($(this).is(':checked')) { 
     $('#territoryName').html(""); 
     $('#Region').val(""); 
     $('#Region').show(); 
    } else { 

    } 
}); 

这里是从视图中的代码。这是一个ASP MVC 3网站

<div class="M-editor-label"> 
     Override Territory Manually? 
    </div> 
    <div class="M-editor-field" style="padding-right:190px;padding-top:5px;"> 
     @Html.CheckBoxFor(Model => Model.OverrideRegionInd) 
    </div> 

编辑

这里是整个<div>它呈现

<div class="M-editor-field" style="padding-right:190px;padding-top:5px;"> 
     <input data-val="true" data-val-required="The Override Territory? field is required." id="OverrideRegionInd" name="OverrideRegionInd" type="checkbox" value="true" /><input name="OverrideRegionInd" type="hidden" value="false" /> 
    </div> 
+0

检查html。该复选框有一个ID – 2013-04-30 21:41:45

+0

让我看看呈现的HTML – 2013-04-30 21:42:48

+0

已添加到帖子 – NealR 2013-04-30 21:48:03

回答

1

您发布的代码(和生成的HTML)后工作完全一样的(请参阅Fiddle HERE

唯一的区别是,JSFiddle将jQuery包装为一个document.ready来电,试试:

$(function() { 
    $('#OverrideRegionInd').click(function() { 
     //click function code 
    }); 
}); 
+0

将这段代码放在'document.ready'中使它工作。任何想法为什么它不能在它之外工作? (我刚刚在一周前开始在工作中学习jQuery) – NealR 2013-04-30 21:57:56

+0

@NealR因为不能保证当代码执行时DOM已经完全加载(在你的情况下它没有),所以你应该总是使用'document.ready '(与纯JavaScript中的window.onload类似)。 – mattytommo 2013-04-30 21:59:04