ASP.NET MVC提交按钮单击未触发

时间:2013-10-14 00:29:06

标签: c# javascript jquery asp.net asp.net-mvc

我遇到按钮点击事件触发的问题。我在同一视图上有两个按钮,但由于某种原因,单击一个按钮后,其他按钮单击事件不会触发。你能帮忙吗?如果您在copydata按钮后面看到下面的内容,请单击getdata按钮单击不会触发。

<div id ="MainDiv">
    <table>
        <tr>
            <td>
                <h4> Please Select the Environment :</h4>
            </td>
        </tr>
        <tr>
            <td>
                @Html.DropDownList(
                    "SelectedEnvironmentID",
                    new SelectList(
                        Model.EnvironmentViewModel.Select(x => new { Value = x.Id, Text =  
                        x.Name }),
                        "Value",
                        "Text"), new { @onchange = "HideElements()" }
                    )
            </td>
        </tr>
        <tr>
            <td>
                <h4> Please Select the Version :</h4>
            </td>
        </tr>
        <tr>
            <td>
                @Html.DropDownList(
                    "SelectedVersionID",
                    new SelectList(
                        Model.VersionsModel.Select(x => new { Value = x.Id, Text = x.Number }),
                        "Value",
                        "Text"), new { @onchange = "HideElements()" }
                    )
            </td>
        </tr>
        <tr>
            <td>
                <input id="getData" name="ViewServerData" type="submit" value="View Profiles" />
            </td>
        </tr>

    </table>
</div>

 <p></p>   

 <div id ="ProfileCopyDiv" class="Copy" >
    <table>
        <tr>
            <td>
                <h4> Please Select the Environment To Copy Selected Server Profile:</h4>
            </td>
        </tr>
        <tr>
            <td>
                @Html.DropDownList(
                    "SelectedEnvironmentID2",
                    new SelectList(
                        Model.EnvironmentViewModel.Select(x => new { Value = x.Id, Text = 
                     x.Name }),
                        "Value",
                        "Text"), new { }
                    )
            </td>
        </tr>
        <tr>
            <td>
                <h4> Please Select the Version To Copy Selected Server Profile:</h4>
            </td>
        </tr>
        <tr>
            <td>
                @Html.DropDownList(
                    "SelectedVersionID2",
                    new SelectList(
                        Model.VersionsModel.Select(x => new { Value = x.Id, Text = x.Number }),
                        "Value",
                        "Text"), new { }
                    )
            </td>
        </tr>
        <tr>
            <td>
                <h4> Please Select the PlatformProfile To Copy:</h4>
            </td>
        </tr>

        <tr>
            <td>
                @Html.DropDownList(
                    "SelectedProfileID2", selectList: new SelectList(
                        Model.PlatformProfilewModel.Select(x => new { Value = x.Id, Text = 
              x.Name }),
                        "Value",
                        "Text"), htmlAttributes: new { }
                    )
            </td>
        </tr>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td>  <input id="copyData" name="SnapshotData" type="submit" value="Submit" /> </td>
        </tr>
        <tr>
            <td></td>
        </tr>
    </table>
  </div>
<script type="text/javascript">
    $(function() {
         @grid1.GetJavaScript();
         @grid2.GetJavaScript();

        $("#getData").click(function() {

            alert("Test");
            document.getElementById('gridWrapper1').style.display = 'block';
            document.getElementById('gridWrapper2').style.display = 'block';
            document.getElementById('gridheader').style.display = 'block';
            $('#gridheader').empty();
            //var content = "<table><tr><td><h4>Selected Environment :" +    
              $('#SelectedEnvironmentID :selected').text() + " </h4></td>" +
            //"<td><h4> Selected Version: " + $('#SelectedVersionID :selected').text() 
            + "</h4></td></tr></table>";
            //$('#gridheader').append(content);

            var url = '@Url.Action("GetServersWithSettings")';
            url = url + '?envtid=' + $("#SelectedEnvironmentID").val() + '&versionid=' + 
         $("#SelectedVersionID").val();
            $("#ServersWS").jqGrid('setGridParam', { url: url }).trigger('reloadGrid');
            alert(url);

            var url1 = '@Url.Action("GetServersWithZeroSettings")';
            url1 = url1 + '?envtid=' + $("#SelectedEnvironmentID").val() + '&versionid=' + $("#SelectedVersionID").val();
            $("#ServersWNS").jqGrid('setGridParam', { url: url1 }).trigger('reloadGrid');

            alert(url1);

        });

        $("#copyData").click(function() {

            var selectedRowId = $('#ServersWS').jqGrid('getGridParam', 'selrow');
            var rowData = jQuery("#ServersWS").jqGrid('getRowData', selectedRowId);

            $("#MainDiv *").attr("disabled", false).off('click');
            var url = '@Url.Action("Index")';
            //url = url + '?envtid=' + $("#SelectedEnvironmentID").val() + '&versionid=' + $("#SelectedVersionID").val()
            //              + '&profileid=' + rowData['ProfileId'] + '&envtid2=' + $("#SelectedEnvironmentID2").val() + '&versionid2=' + $("#SelectedVersionID2").val();
            HideElements();
            $.ajax({
                url: url,
                data: {
                            BaseEnvtId: $("#SelectedEnvironmentID").val(),
                            BaseVersionId: $("#SelectedVersionID").val(),
                            BaseProfileId: rowData['ProfileId'],
                            NewEnvtId: $("#SelectedEnvironmentID2").val(),
                            NewVersionId: $("#SelectedVersionID2").val(),
                            NewProfileId: $("#SelectedProfileID2").val(),
                },
                type: 'POST',
                datatype: 'json',
                success: function(data) {
                    //var content = "<div style=/""color: green ;font-weight:900;/"">Baseline Profile Copied Successfully</div>";
                    $("#MainDiv *").attr("disabled", true).off('click');
                    document.getElementById('ProfileCopyDiv').style.display = 'block';
                    $("#MainDiv *").attr("disabled", false).off('click');
                    document.getElementById('displaySuccess').style.display = 'block';
                    $("#ProfileCopyDiv *").attr("disabled", true).off('click');
                    document.getElementById('ProfileCopyDiv').style.display = 'none';
                },
                error: function() { alert('something bad happened'); }
            });



        });

    });
</script>

2 个答案:

答案 0 :(得分:2)

  

如果您在copydata按钮后面看到下面的内容,请点击getdata按钮点击不会激活。

这是因为您在为#MainDiv后代的所有元素单击copyData时禁用了click事件。所以这种行为很自然。

     $("#copyData").click(function() {

        var selectedRowId = $('#ServersWS').jqGrid('getGridParam', 'selrow');
        var rowData = jQuery("#ServersWS").jqGrid('getRowData', selectedRowId);

        $("#MainDiv *").attr("disabled", false).off('click'); //<---- HERE
        var url = '@Url.Action("Index")';

由于off会关闭事件,因此#MainDiv *选择器会选中您不幸的按钮,以便关闭点击事件。

还可以更好地使用prop代替attr

答案 1 :(得分:0)

你可能在那里遇到了一些错误的javascript,但却没有看到所有错误,这是不可能的。尝试在调试器中单步执行它(使用Chrome的开发人员工具),看看是否收到错误消息。也许是 HideElements()功能。

相关问题