我是一個jQuery新手,但長期的Perl開發人員,並知道正則表達式,所以我不想使用jQuery驗證插件。jQuery:恢復初始的css('值'),同時驗證表格
我試圖驗證以下3種網頁形式,每個都有一個文本或文本域輸入字段#blah_txt和一個提交按鈕#blah_btn:
我米,下面的jQuery代碼,這似乎運作良好驗證他們:
<script type="text/javascript" src="/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
$(function() {
$('#mks_btn').click(function(e) {
$('#cl_txt').css('border', '2px solid black');
$('#comment_txt').css('border', '2px solid black');
if (! $('#mks_txt').val().match(/^(CL\s*)?[0-9]{6,}$/i)) {
$('#mks_txt').css('border', '2px solid red');
e.preventDefault();
}
});
$('#cl_btn').click(function(e) {
$('#mks_txt').css('border', '2px solid black');
$('#comment_txt').css('border', '2px solid black');
if (! $('#cl_txt').val().match(/^(MKS\s*)?[0-9]{6,}$/i)) {
$('#cl_txt').css('border', '2px solid red');
e.preventDefault();
}
});
$('#comment_btn').click(function(e) {
$('#mks_txt').css('border', '2px solid black');
$('#cl_txt').css('border', '2px solid black');
if ($('#comment_txt').val().length < 2) {
$('#comment_txt').css('border', '2px solid red');
e.preventDefault();
}
});
});
</script>
我的(化妝品)的問題是:
當用戶在第一個文本字段(「MKS」)中輸入無效值並點擊「添加MKS」按鈕時,我的代碼將阻止表單提交併使文本框的邊框變爲紅色。然後用戶改變主意並決定將文本輸入另一個網絡表單並再次輸入無效數據。然後我會有2個紅色的邊框,這會刺激用戶。
我試圖通過將其他文本字段設置爲單擊按鈕上的純黑色來解決此問題 - 如上所示。但是這看起來不太好,因爲在用戶開始輸入任何東西之前,原始邊界已經是別的東西了。
所以我想,如果我能恢復原來CSS(「邊界」)爲不知何故所有文本輸入字段值 - 當按鈕被點擊(或者在模糊或其他一些事件,表明用戶已切換到另一個網頁表單?)
謝謝您的任何建議!亞歷克斯
UPDATE
我的瀏覽器是火狐3.6.12/WinXP的,但我想:-)
更新2
爲的HTML代碼,當然所有的瀏覽器工作3網頁形式如下,我只有文本和鏈接,除此之外,沒有更多的網頁元素:
<form>
<tr valign="top">
<th>MKS</th><td>
<input name="show_id" type="hidden" value="20110111172527685">
<input name="toggle_mks" id="mks_txt" type="text" size="10" maxsize="10">
<input type="submit" id="mks_btn" value="Add MKS" class="toggle">
</td></tr>
</form>
<form>
<tr bgcolor="#EEEEEE" valign="top">
<th>CL</th><td>
<input name="show_id" type="hidden" value="20110111172527685">
<input name="toggle_cl" id="cl_txt" type="text" size="10" maxsize="10">
<input type="submit" id="cl_btn" value="Add CL" class="toggle">
</td></tr>
</form>
<form>
<tr valign="top">
<th>Comments</th><td>
<input name="show_id" type="hidden" value="20110111172527685">
<textarea name="comment" id="comment_txt" rows="4" cols="60" maxsize="320">
</textarea>
<input type="submit" id="comment_btn" value="Add comment" class="toggle">
</td></tr>
</form>
感謝 - 這是很好的建議,任何想法,請在如何自動化removeClass()上的一些事件致電(模糊?) 並且:是它仍然可以調用$('#mks_txt')。removeClass(「className」);如果該領域沒有添加該類的話? – 2011-01-13 15:42:26