2017-05-26 41 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

如果我沒有如此纏繞警報的軸,我可能已經找到了這個。我一直在問錯誤的問題......大聲笑... –