我一辈子都想不通这个。 我有两个javascript函数(jQuery(链接到按钮,使用后面的 vb.net 代码,如下所示:
Button_NewProgram.Attributes.Add("OnClick", "return NewProgramEdits();")
Button_SaveSchedule.Attributes.Add("OnClick", "return ScheduleEdits()")
这两个按钮都是具有母版页的内容页的一部分,内容中没有正文或表单标记,只是一个未设置 id 的表。 这两种JavaScript功能几乎都是精确的,但由于某种原因,执行方式却大不相同。 我知道它们会触发,因为我看到警报,我使用 IE v11。 我没有收到任何错误。 这些功能是:
我为 document.ready(( 中的所有文本框设置了一个掩码
$("#<%=Inputmask_RegFee1.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee2.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee3.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee4.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee5.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee6.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee7.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee8.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee9.ClientID%>").inputmask("999");
$("#<%=Inputmask_RegFee10.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee1.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee2.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee3.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee4.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee5.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee6.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee7.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee8.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee9.ClientID%>").inputmask("999");
$("#<%=Inputmask_Fee10.ClientID%>").inputmask("999");
' This one works, yet the alert shows nothing for the value of fee1
' and programname yet returns the correct response as all the fees
' are zero and the program IS set to a value ("test'). Strange.
function NewProgramEdits() {
var fee1 = $('#<%=Inputmask_Fee1.ClientID%>').val().replace(/_/g, "");
alert("New Program Fee 1 = ") + fee1;
var fee2 = $('#<%=Inputmask_Fee2.ClientID%>').val().replace(/_/g,"");
var fee3 = $('#<%=Inputmask_Fee3.ClientID%>').val().replace(/_/g,"");
var fee4 = $('#<%=Inputmask_Fee4.ClientID%>').val().replace(/_/g,"");
var fee5 = $('#<%=Inputmask_Fee5.ClientID%>').val().replace(/_/g,"");
var fee6 = $('#<%=Inputmask_Fee6.ClientID%>').val().replace(/_/g,"");
var fee7 = $('#<%=Inputmask_Fee7.ClientID%>').val().replace(/_/g,"");
var fee8 = $('#<%=Inputmask_Fee8.ClientID%>').val().replace(/_/g,"");
var fee9 = $('#<%=Inputmask_Fee9.ClientID%>').val().replace(/_/g,"");
var fee10 = $('#<%=Inputmask_Fee10.ClientID%>').val().replace(/_/g,"");
var newprogram = $('#<%=TextBox_NewProgram.ClientID%>').val().toUpperCase();
alert("Program Name = ") + newprogram;
if (newprogram == '') {
alert('Enter the program name.');
$('#<%=TextBox_NewProgram.ClientID%>').focus();
return false;
} else if (fee1 == '0' && fee2 == '0' && fee3 == '0' && fee4 == '0' && fee5 == '0' && fee6 == '0' && fee7 == '0' && fee8 == '0' && fee9 == '0' && fee10 == '0') {
alert('You must enter at least one fee value for a new program, they cannot all be zero.');
$('#<%=Inputmask_Fee1.ClientID%>').focus();
return false;
} else {
return true;
}
}
由于某种原因,这个不起作用:
' The alerts show nothing or empty string even though
' the default values for the textboxes is ALWAYS zero,
' the replace code replaces the mask character with an empty string
' the actual value of ALL the textboxes is "0__" (two underscores)
function ScheduleEdits() {
var regfee1 = $('#<%=Inputmask_RegFee1.ClientID%>').val().replace(/_/g, "");
var regfee2 = $('#<%=Inputmask_RegFee2.ClientID%>').val().replace(/_/g, "");
var regfee3 = $('#<%=Inputmask_RegFee3.ClientID%>').val().replace(/_/g, "");
var regfee4 = $('#<%=Inputmask_RegFee4.ClientID%>').val().replace(/_/g, "");
var regfee5 = $('#<%=Inputmask_RegFee5.ClientID%>').val().replace(/_/g, "");
var regfee6 = $('#<%=Inputmask_RegFee6.ClientID%>').val().replace(/_/g, "");
var regfee7 = $('#<%=Inputmask_RegFee7.ClientID%>').val().replace(/_/g, "");
var regfee8 = $('#<%=Inputmask_RegFee8.ClientID%>').val().replace(/_/g, "");
var regfee9 = $('#<%=Inputmask_RegFee9.ClientID%>').val().replace(/_/g, "");
var regfee10 = $('#<%=Inputmask_RegFee10.ClientID%>').val().replace(/_/g, "");
var programtype = $('#<%=RadioButtonList_RegFeeMethod.ClientID%>').val().toUpperCase();
alert("Fee 1 = ") + regfee1;
alert("Program Type = ") + programtype;
if (programtype == 'SCHEDULE' && regfee1 == '0' && regfee2 == '0' && regfee3 == '0' && regfee4 == '0' && regfee5 == '0' && regfee6 == '0' && regfee7 == '0' && regfee8 == '0' && regfee9 == '0' && regfee10 == '0') {
alert('You must enter at lease one fee value for the schedule program.');
$('#<%=Inputmask_RegFee1.ClientID%>').focus();
return false;
} else {
return true;
}
}
注意:为单选按钮列表添加了标记
<asp:RadioButtonList ID="RadioButtonList_RegFeeMethod" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="SCHEDULE">Schedule</asp:ListItem>
<asp:ListItem Value="PROGRAM">Program</asp:ListItem>
<asp:ListItem Value="ZEROFEE">Zero Fee</asp:ListItem>
</asp:RadioButtonList>
考虑以下代码:
<asp:RadioButtonList ID="RadioButtonList_RegFeeMethod" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="SCHEDULE">Schedule</asp:ListItem>
<asp:ListItem Value="PROGRAM">Program</asp:ListItem>
<asp:ListItem Value="ZEROFEE">Zero Fee</asp:ListItem>
</asp:RadioButtonList>
若要获取所选单选检查的值,需要使用$("#ID input:checked")
来捕获正确的元素。这看起来像:
var programtype = $("#<%=RadioButtonList_RegFeeMethod.ClientID%> input:checked").val();
这应该选择正确的<input>
元素,并允许您访问其value
属性。
<input name="rdSchedule" type="radio" id="rdSchedule" value="SCHEDULE" />
<label>Schedule</label>
<input name="rdProgram" type="radio" id="rdProgram" value="PROGRAM" />
<label>Program</label>
<input name="rdZeroFee" type="radio" id="rdZeroFee" value="ZEROFEE" />
<label>Zero Fee</label>
<script type="text/javascript">
function ScheduleEdits() {
var regfee1 = $('#<%=Inputmask_RegFee1.ClientID%>').val().replace(/_/g, "");
var regfee2 = $('#<%=Inputmask_RegFee2.ClientID%>').val().replace(/_/g, "");
var regfee3 = $('#<%=Inputmask_RegFee3.ClientID%>').val().replace(/_/g, "");
var regfee4 = $('#<%=Inputmask_RegFee4.ClientID%>').val().replace(/_/g, "");
var regfee5 = $('#<%=Inputmask_RegFee5.ClientID%>').val().replace(/_/g, "");
var regfee6 = $('#<%=Inputmask_RegFee6.ClientID%>').val().replace(/_/g, "");
var regfee7 = $('#<%=Inputmask_RegFee7.ClientID%>').val().replace(/_/g, "");
var regfee8 = $('#<%=Inputmask_RegFee8.ClientID%>').val().replace(/_/g, "");
var regfee9 = $('#<%=Inputmask_RegFee9.ClientID%>').val().replace(/_/g, "");
var regfee10 = $('#<%=Inputmask_RegFee10.ClientID%>').val().replace(/_/g, "");
var progTypeSched = $("#rdSchedule").prop("checked");
alert("Fee 1 = " + regfee1);
alert("Program Type = " + programtype);
if (progTypeSched && regfee1 == '0' && regfee2 == '0' && regfee3 == '0' && regfee4 == '0' && regfee5 == '0' && regfee6 == '0' && regfee7 == '0' && regfee8 == '0' && regfee9 == '0' && regfee10 == '0') {
alert('You must enter at lease one fee value for the schedule program.');
$('#<%=Inputmask_RegFee1.ClientID%>').focus();
return false;
} else {
return true;
}
}
</script>