2017-05-26 40 views
1

我不能为我的生活找出这一个。我已经两个JavaScript函数(jQuery的)连接到利用vb.net代码的按钮后面像这样:奇怪的jQuery文本框问题

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> 
+3

您是否注意到警报无法编译? 'alert(“Fee 1 =”)+ regfee1;'在这里复制它是否是一个错字? – hardkoded

+0

我没有得到任何错误,我一直使用该代码来显示var值。 –

+2

该警报应该是'alert(“Fee 1 =”+ regfee1);' – hardkoded

回答

2

考虑下面的代码:

<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属性。

2
<input name="rdSchedule" type="radio" id="rdSchedule" value="SCHEDULE" />&nbsp; 
<label>Schedule</label>&nbsp;&nbsp;      
<input name="rdProgram" type="radio" id="rdProgram" value="PROGRAM" />&nbsp; 
<label>Program</label> 
<input name="rdZeroFee" type="radio" id="rdZeroFee" value="ZEROFEE" />&nbsp; 
<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> 
+0

虽然我确定这段代码可以正常工作,但不幸的是,我坚持使用RadioButtonList。 –

+0

可以理解。尝试这个漂亮的解决方案来解决使用jQuery的RBL限制:https://stackoverflow.com/questions/308301/reading-the-selected-value-from-aspradiobuttonlist-using-jquery GL! – mjw

+0

如果我没有如此缠绕警报的轴,我可能已经找到了这个。我一直在问错误的问题......大声笑... –