2014-09-30 70 views
0

txtTransactionDatetxtOperatorNumber是SQL過程中的參數,它允許cboAssignedSite下拉列表自動填充。有時,基於所選參數cboAssignedSite沒有任何價值,我想向用戶顯示一條有意義的消息,指出這一點。輸入文本後出現jQuery警報消息

我到目前爲止所嘗試的是在其中一個文本字段的更改事件中放置警報。問題在於,警報似乎在表單提交之前發生,因此無論下拉列表中是否有值,在警報發生時它總是顯示爲空。

我是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> 
+0

爲什麼你提交jQuery的表單當您更改值?你不需要兩個值嗎?如果下拉列表爲空,您可能需要考慮檢查預先提交的值,只顯示消息:http://api.jquery.com/submit/ – schudel 2014-10-01 06:50:11

+0

是的,您是對的。我確實需要兩個值;但是,我不知道如何在不提交表單的情況下將兩個值都提交到數據庫。我有兩個提交,因爲我不確定用戶將首先輸入哪個文本字段。再次,我是新的jQuery,所以可能有一個更簡單的方法。 – SeanFlynn 2014-10-01 15:20:11

+0

不可以。我想將日期和操作員字段提交給數據庫,然後如果下拉菜單爲空,請告訴用戶諸如「沒有與您輸入的日期和操作員關聯的位置」。 – SeanFlynn 2014-10-01 15:47:36

回答

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

正是我在找的!謝謝! – SeanFlynn 2014-10-01 17:32:29

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

這也工作。將不得不把它放在我的後兜裏;我以前想做這個服務器端。謝謝! – SeanFlynn 2014-10-01 17:37:00