如果用户输入高于可用记录数(脚本更新),则显示错误

时间:2014-03-14 23:45:02

标签: jquery asp-classic

Allende在回答之前的问题时为我写了这篇文章,并且我试图弄清楚如何添加额外的代码,以便用户输入的数字高于总数记录,它会引发错误。我知道我可以使用SQL RecordCount来查找记录数,但我不知道如何将它集成到Allende's脚本中。与脚本一样,在提交表单之前,不需要显示错误。

$(document).ready(function(){           
 $('form').on("submit",function(){
         var tempArray=[];            
         var exists=0;
         $("input[type='text'][name^='PositionNumber']").each(function(){
             exists = tempArray.indexOf($(this).val());             
             if (exists>=0){                    
                 return false;//break the loop
             }
             tempArray.push($(this).val());                  
         });

         //after you can use "exist" to check if duplicated and retrieve the value to cancel the submit
         if (exists>=0){                   
             alert("You have used the number " + tempArray[exists] +" more than once.\r\nPlease correct the error and resubmit.");                
         } else{
             //alert("no duplicated value:");
             return true;
         }

        return false;            
 }); 
});

提前感谢您的帮助和建议。

此致

2 个答案:

答案 0 :(得分:0)

是的,一个选项是拥有另一个隐藏字段并修改你的jquery,但更优雅的解决方案是首先无法输入无效值。没有一个文本字段来输入位置,你可以选择一个只能达到记录数的选项。

ASP看起来像这样

<select name="positionnumber">
<% 
For i = 1 To rsmenulist.recordcount 
  response.write "<option>" & i & "</option>"
Next
%>
</select>
这个看起来像是

<select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>

(当然假设有4条记录。

如果您希望当前值在页面加载时显示为已选中,则可以按如下方式对其进行修改。

<select name="positionnumber">
<%     
For i = 1 To rsmenulist.recordcount 
if i = cint(rsmenulist("recordposition")) then 
 selected = " selected" 
else
 selected = ""
end if
  response.write "<option" & selected & ">" & i & "</option>"
Next
%>
</select>

您显然已经使用Dreamweaver编写了asp代码。在它结束的时候,这是主要的事情,但DW会产生非常臃肿的代码,当你需要做一些事情时,DW没有一个向导可以找出你自己修改的地方可以一场噩梦如果你有时间(我意识到这可能是一个问题),那么值得找一个好的教程,你会发现如何用2行代替DW在20 +中做的事情。

DW通常做的一件事是关闭一个代码块(使用&#34;%&gt;&#34;),然后在下一行&#34;&lt;%&#34;上打开另一个代码块。中间没有客户端代码。如果你想对你的网络服务器很好,那么值得将它们合并到一个代码块中。我特别谈到关闭所有记录集的页面末尾的部分

答案 1 :(得分:0)

以下是获取表单记录的SQL代码:

SELECT tblContent.*, tblMainMenu.MainMenuName, tblSubMenu.SubMenuName, tblSubMenu.SubMenuID
FROM (tblContent LEFT JOIN tblMainMenu ON tblContent.MainMenuID = tblMainMenu.MainMenuID) LEFT JOIN tblSubMenu ON tblContent.SubMenuID = tblSubMenu.SubMenuID
WHERE tblContent.SubMenuID = smID AND tblContent.DisplayRecord =1
ORDER BY tblContent.PositionNumber

这是在页面上显示它的代码(添加了John的代码):

<% IF Request.ServerVariables("QUERY_STRING") <> "" THEN %>
<h3><span style="font-size:small">Order/Re-order records for: </span><%=(rsContent.Fields.Item("SubMenuName").Value)%></h3>
<form action="record-order-modify.asp" method="post" class="recordPosition">
<%=rsRecordCount.RecordCount %>
<% 
While ((rptContent__numRows <> 0) AND (NOT rsContent.EOF)) 
%>
  <table width="100%" id="records">
    <tr>
      <td align="left" valign="top" name="ContentTitle" colspan="2"><h2><%=(rsContent.Fields.Item("ContentTitle").Value)%></h2><input type="hidden" value="<%=(rsContent.Fields.Item("ContentID").Value)%>" name="ContentID<%=counter%>">
      <%=(rsContent.Fields.Item("ContentData").Value)%>...
      </td>
      </tr>
      <tr>
      <td width="240"><label>Current Record Position:</label>&nbsp;&nbsp;<input type="text" class="recordPosition" value="<%=(rsContent.Fields.Item("PositionNumber").Value)%>"></td>
      <td align="right"><label>New Position: <small class="brown" style="text-transform:none">(You may change it here)</small></label>&nbsp;&nbsp;
        <select name="PositionNumber" class="recordPosition">
        <% 
        For i = 1 To rsContent.RecordCount 
        Response.Write "<option>" & i & "</option>"
        Next
        %>
        </select>
      </td>
     </tr>
  </table>
  <hr>
  <% 
  rptContent__index=rptContent__index+1
  rptContent__numRows=rptContent__numRows-1
  rsContent.MoveNext()
Wend
%>
<table align="center" class="positionButtons">
<tr>
<td width="50%" align="right"><input name="Submit" type="submit" value="Update Positions"></td>
<td width="50%" align="left"><input name="Reset" type="reset" value="Reset All Changes" tabindex="<%=counter%>"></td>
</tr>
</table>
<input type="hidden" name="action" value="update">
<input type="hidden" name="counter" value="<%=counter%>">
</form>
<% ELSE %>
<h3>Select a listing to order/re-order using the list on the left.</h3>
<% END IF %>