输入文本后的jQuery警报消息

时间:2014-09-30 17:54:31

标签: jquery stored-procedures asp-classic

txtTransactionDatetxtOperatorNumber是SQL proc中的参数,允许cboAssignedSite下拉列表自动填充。有时,基于所选参数,cboAssignedSite没有值,我想向用户显示一条有意义的消息,表明这一点。

到目前为止,我尝试的是在其中一个文本字段的change事件中放置警报。问题是警报似乎发生在表单提交之前,因此无论下拉列表中是否有值,它在警报时始终显示为空。

我是jQuery的新手,所以有可能这甚至不是最好的方法。目标是在用户选择文本字段中的参数后提醒用户下拉列表为空。

提前致谢。

记录集:

Set RS= CN.Execute("spSelect @vOperatorNumber = '" & Request.Form("txtOperatorNumber") & "', @vTransDate = '" & Request.Form("txtTransactionDate") & "'")

Jquery的:

$(document).ready(function() 
    {
        $('#txtTransactionDate').change
            (
                 function() 
                 {
                    $('#frmRequest').submit();
                 }      
            );

            $('#txtOperatorNumber').change
            (
                 function() 
                 {
                    $('#frmRequest').submit();
                    alert($('#cboAssignedSite option:selected').text());
                }
            );
    }); 

HTML / ASP:

<form name="frmRequest" id="frmRequest" method="post">
    <input name="txtTransactionDate" type="text" id="txtTransactionDate" value="<%=vTransDate%>"/>
    <input name="txtOperatorNumber" type="text" id="txtOperatorNumber" value="<%=vOperatorNumber%>"/>
    <select name="cboAssignedSite" id="cboAssignedSite">
        <%If Not RS.EOF Then
            Do While Not RS.EOF%>
                <option value='<%= RS("assignedSite")%>'
                    <%If Request.Form("cboAssignedSite") = RS("assignedSite") Then Response.Write("selected")%>>
                    <%= RS("location")%></option>
                <%RS.MoveNext
            Loop
        End If%>
    </select>
</form>

2 个答案:

答案 0 :(得分:1)

你可以在没有jQuery的情况下做到这一点:

<%If RS.EOF and Request.ServerVariables("REQUEST_METHOD") = "POST" Then %>
    <div id="message" style="border:1px solid red">No site available</div>
<%end if%>

<form name="frmRequest" id="frmRequest" method="post">
    <input name="txtTransactionDate" type="text" id="txtTransactionDate" value="<%=vTransDate%>"/>
    <input name="txtOperatorNumber" type="text" id="txtOperatorNumber" value="<%=vOperatorNumber%>"/>
    <select name="cboAssignedSite" id="cboAssignedSite">
        <%If Not RS.EOF Then
            Do While Not RS.EOF%>
                <option value='<%= RS("assignedSite")%>'
                    <%If Request.Form("cboAssignedSite") = RS("assignedSite") Then Response.Write("selected")%>>
                    <%= RS("location")%></option>
                <%RS.MoveNext
            Loop
        End If%>
    </select>
</form>

答案 1 :(得分:0)

除非您需要/想要阻止用户提交表单,否则我会执行以下操作: 如果下拉列表为空,请在html中添加消息div并在加载时显示:

  <script>
    $(document).ready(function () {
      if ($('#cboAssignedSite').val() === null) {
        $('#message').show();
      }
    });
  </script>

<form name="frmRequest" id="frmRequest" method="post">
    <div id="message" style="border:1px solid red;display:none">No site available</div>
    <input name="txtTransactionDate" type="text" id="txtTransactionDate" value="<%=vTransDate%>"/>
    <input name="txtOperatorNumber" type="text" id="txtOperatorNumber" value="<%=vOperatorNumber%>"/>
    <select name="cboAssignedSite" id="cboAssignedSite">
        <%If Not RS.EOF Then
            Do While Not RS.EOF%>
                <option value='<%= RS("assignedSite")%>'
                    <%If Request.Form("cboAssignedSite") = RS("assignedSite") Then Response.Write("selected")%>>
                    <%= RS("location")%></option>
                <%RS.MoveNext
            Loop
        End If%>
    </select>
</form>