2012-07-09 31 views
0

我有一個帶有表單的JSP頁面。使用onchange事件驗證文本字段?

的形式有很多領域,包括文本字段,單選按鈕等

我有被稱爲EMP ID一個特殊的領域。這是一個文本字段。

此emp ID必須是9個字符長。如果它小於或大於9個字符,那麼我需要向用戶發出警告消息,表明輸入的emp標識無效。

我已經寫了一個javascript方法來驗證這個字段是在該字段的事件onchange上觸發的。

現在,我已經將此字段設置爲自動查找。因此,用戶可以輸入前幾位數字,然後可以看到在emp ID字段中填充的現有empid列表。

這幾乎是汽車lokups的普遍工作方式。

問題是,當用戶嘗試從自動查找中選擇emp id時,由於鼠標指針移出文本字段,onchange事件被觸發。

這是錯誤的,我希望在從自動查找列表中選擇值或手動輸入值後觸發事件。

請幫忙。

我正在使用jquery自動查找。

以下是我的JSP代碼。

<script> 
    $(function() { 

     function validateEmpId(empId) { 
      empId = $.trim(empId); 
      empId = empId.replace(/\s/g, ""); 
      if (empId.length != 9) { 
       alert("Please enter a valid Emp Id."); 
      } 
     } 

     $("#empId") 
       .autocomplete(
         { 
          source : function(request, response) { 

           $.ajax({ 
            url : "${findEmployeesByEmpIdIdUrl}" 
              + "?t=" + getTimestamp() 
              + "&hcAsOnDate=" + hcAsOnDate, 
            datatype : "json", 
            data : { 
             dbPrismId : request.term 
            }, 
            success : function(data) { 
             response($.map(data, function(item) { 
              return { 
               label : item.dbPrismId, 
               value : item.dbPrismId, 
               id : item.id + "_" 
                 + item.forecast 
              }; 
             })); 
            } 
           }); 
          }, 
          minLength : 1, 
          select : function(event, ui) { 
           var employeeId = ui.item.id; 


          }, 
          open : function() { 
           $(this).removeClass("ui-corner-all").addClass(
             "ui-corner-top"); 
          }, 
          close : function() { 
           $(this).removeClass("ui-corner-top").addClass(
             "ui-corner-all"); 
          } 
         }); 

    }); 
</script> 

<form action="save" method="POST" name="employeeForm" id="employeeForm"> 
    <input type="text" name="empId" id="empId" maxlength="9" onchange="validateEmpId(this.value);" class="input-txt" /> 
</form> 
+0

什麼是你的自動查找代碼? – WolvDev 2012-07-09 12:39:35

+0

@ ShogunArts.de。請參閱我已更新我的問題。 – ashishjmeshram 2012-07-09 12:42:55

回答

0

嘗試這樣做你的選擇函數內部:

select: function(event, ui) { 
    if (validateEmpId(ui.item.id)) self.location.href='?site=whatever&id=' + ui.item.id; 
    else alert("Please enter a valid Emp Id."); 
} 


function validateEmpId(empId) { 
    empId = $.trim(empId); 
    empId = empId.replace(/\s/g, ""); 
    if (empId.length != 9) return false; 
    else return true; 
} 
+0

選擇功能在顯示驗證警報後被調用。 – ashishjmeshram 2012-07-09 12:56:16

+0

比選擇完成時和驗證正確時執行location.href其他錯誤警報。 (用例子編輯我的帖子) – WolvDev 2012-07-09 12:58:10

+0

ShogunArts.de emp id也可以手動輸入。我如何驗證這樣的emp ID。爲了做到這一點,我已經在文本字段的onchange事件上調用了validate方法。 – ashishjmeshram 2012-07-09 13:15:02