簡體   English   中英

奇怪的jQuery文本框問題

[英]strange jQuery textbox issue

我無法為自己的生命弄清楚這一點。 我有兩個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>
<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>

考慮以下代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM