我遇到按钮点击事件触发的问题。我在同一视图上有两个按钮,但由于某种原因,单击一个按钮后,其他按钮单击事件不会触发。你能帮忙吗?如果您在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>
答案 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()功能。