在MVC3中加载第二个视图时,不执行javascript .click

时间:2011-11-21 09:38:45

标签: jquery asp.net-mvc-3

我正在使用MVC3HTML次观看。

以下是我的观点:

@model mobilesurveys.mt.Models.Question  
@{ ViewBag.Title = "Question"; }
<div data-role="header" data-theme="b">
    <h1>@Model.SurveyName</h1>
</div>

@if (@Model.QuestionType == 7)
{   
    <div data-role="fieldcontain">
    @using (Html.BeginForm("SaveDropDown", "GetQuestion", Model))
    {
        @Html.AntiForgeryToken()
        <fieldset>
            <label class="select">@Model.QuestionText</label><br />
            <select name="selectedObjects" id="selectchoice1" data-native-menu="false">
                <option value="-1">--Select--</option>
                @foreach (var item in Model.Options)
                {
                    if (@item.IsAnswer == true)
                    {
                        <option selected="selected"  value="@item.OptionNumber">@item.OptionText</option>
                    }
                    else
                    {
                        <option  value="@item.OptionNumber">@item.OptionText</option>
                    }
                }
            </select>
        </fieldset>

        <p><input type="submit" id="selectsubmit" value="Next" /></p>
    }
    </div>
} 

@if (@Model.QuestionType == 1)
{
    <div data-role="fieldcontain">
    @using (Html.BeginForm("SaveRadio", "GetQuestion", Model))
    {
        @Html.AntiForgeryToken() 
        <fieldset data-role="controlgroup" id="radio_fieldset">
            <label id="l1" for="select-choice-1" class="select">@Model.QuestionText</label><br />
            @foreach (var item in Model.Options)
            {
                if (@item.IsAnswer == true)
                {
                    <input type="radio" checked="checked" name="selectedObjects" id="@item.OptionText" value="@item.OptionNumber"  onselect="next(@item.OptionNumber);" />
                }
                else
                {
                    <input type="radio" name="selectedObjects" id="@item.OptionText" value="@item.OptionNumber"  onselect="next(@item.OptionNumber);" />
                }
                <label for="@item.OptionText">@item.OptionText</label> 
            }
            <br />
        </fieldset>
        <p><input type="submit" id="radio_submit" onclick="validate(this);" value="Next" /></p>
    }
    </div>
}

这是我的javascript:

<script type="text/javascript">
    $(document).ready(function () {
        // validation for select that can not leave empty.

        $("#selectsubmit").click(function (e) {
            var textContent = $("#selectchoice1").val();
            textContent = jQuery.trim(textContent);
            if (textContent == "-1") {
                alert("please select the value");
                $("#selectchoice1").focus();
                return false;
            }
        });

        $("#radiosubmit").click(function (e) {
            alert('hi');
        });
    });  
</script>

我正在重定向到控制器中具有不同ID的同一视图。

问题在于第一次加载文档时只执行javaScript。当我点击radiosubmit按钮时,警报未触发。

如何在MVC3中处理?

1 个答案:

答案 0 :(得分:2)

您将事件绑定到必须已在页面上的特定对象。你有两个选择:

  • 使用jquery live
  • 在加载第二个视图后再次单击“

尝试谷歌关于bind和live之间的差异(点击只是在特定事件上绑定的快捷方式,称为点击)