function check_form(){ usernameObj = $("#userName")[0]; //window.alert(usernameObj.value); //show usernameObj=[object HTMLInputElement] var language = $("#choose_language").val(); if(usernameObj.value==''){ showWarningMsg(""); return false; } pwdObj = $("#password")[0]; if(pwdObj.value==''){ showWarningMsg(""); return false; } var yanzheng = $("#user_varify").val(); if(yanzheng==""&&yanzheng.length!=4){ showWarningMsg(""); return false; } requestUrl = formatAjaxUrl("std-index.php"); $.post(requestUrl, {"language":language,"action":"login_in","username":usernameObj.value, "password": hex_md5(pwdObj.value)+"", "choose": document.getElementById("checkednames").value, "remember": "0","yanzheng":yanzheng}, function(data, textStatus) { if (textStatus=="success") { errorCode = getErrorCode(data); switch (errorCode) { case 0: window.location = ""; break; case 1: case 2: showWarningMsg(""); break; case 3: showWarningMsg(""); break; case 4: userHasLogin(""); break; case 5: showWarningMsg(""); refresh_img(); break; case 6: showWarningMsg(""); refresh_img(); break; case 9: break; case 10: // admin & license doesn't exist window.location = "i2/wizard/wiz_license.php"; break; case 11: // admin & notice something window.location = "i2/wizard/wiz_notice.php"; break; case 12: // non-admin user & license doesn't exist showWarningMsg(""); break; case 13: // non-admin & trial license expired showWarningMsg(""); break; case 20: // upgrade database fail errorMsg = getErrorMsg(data); showWarningMsg("" + errorMsg); break; case 99: errorMsg = getErrorMsg(data); showWarningMsg( errorMsg ); break; } } }); return false;}
①$("#userName")[0]中的這個【0】表示什麼意思呀?
②函數最後加了一個return false;它的作用是什麼呢?能否省略?
請大神賜教!
回複內容:
function check_form(){ usernameObj = $("#userName")[0]; //window.alert(usernameObj.value); //show usernameObj=[object HTMLInputElement] var language = $("#choose_language").val(); if(usernameObj.value==''){ showWarningMsg(""); return false; } pwdObj = $("#password")[0]; if(pwdObj.value==''){ showWarningMsg(""); return false; } var yanzheng = $("#user_varify").val(); if(yanzheng==""&&yanzheng.length!=4){ showWarningMsg(""); return false; } requestUrl = formatAjaxUrl("std-index.php"); $.post(requestUrl, {"language":language,"action":"login_in","username":usernameObj.value, "password": hex_md5(pwdObj.value)+"", "choose": document.getElementById("checkednames").value, "remember": "0","yanzheng":yanzheng}, function(data, textStatus) { if (textStatus=="success") { errorCode = getErrorCode(data); switch (errorCode) { case 0: window.location = ""; break; case 1: case 2: showWarningMsg(""); break; case 3: showWarningMsg(""); break; case 4: userHasLogin(""); break; case 5: showWarningMsg(""); refresh_img(); break; case 6: showWarningMsg(""); refresh_img(); break; case 9: break; case 10: // admin & license doesn't exist window.location = "i2/wizard/wiz_license.php"; break; case 11: // admin & notice something window.location = "i2/wizard/wiz_notice.php"; break; case 12: // non-admin user & license doesn't exist showWarningMsg(""); break; case 13: // non-admin & trial license expired showWarningMsg(""); break; case 20: // upgrade database fail errorMsg = getErrorMsg(data); showWarningMsg("" + errorMsg); break; case 99: errorMsg = getErrorMsg(data); showWarningMsg( errorMsg ); break; } } }); return false;}
①$("#userName")[0]中的這個【0】表示什麼意思呀?
②函數最後加了一個return false;它的作用是什麼呢?能否省略?
請大神賜教!
我能很喜感的說,菜鳥看菜鳥寫的代碼嗎?
兩句都是廢話。
$('#userName')表示根據id尋找對象,但是html規範中id是唯一的,所以這裡的[0]雖然是得到了js原生對象,但是實際上一點用都沒有,參考後面的
var yanzheng = $("#user_varify").val();
同樣的
usernameObj = $("#userName")[0];if(usernameObj.value==''){ showWarningMsg(""); return false;}
可以等效為
usernameObj = $("#userName")[0];if(! $("#userName").val().length){ showWarningMsg(""); return false;}
結尾的return false用來阻止事件冒泡,但是源碼中的onclick="check_form(); return false;"既然又寫了一個return false,那麼函數裡面那個寫不寫都沒用,反正沒掛return。
正確的方式是
因為訪問者按斷行符號也會觸發表單提交,這樣不需要點擊submit按鈕從而繞過了檢測。
再說這個方法最好命名為ajaxSubmit之類的名字,而不是checkform,因為裡麵包含了提交處理。
這段代碼的整體邏輯是
當點擊提交按鈕的時候對form資料進行檢查,如果檢查成功使用ajax提交資料。return false是用來阻止form產生普通的表單提交。
明白意思就好了,代碼本身沒什麼值得學習的。
1.選擇這個是返回jquery對象。
2.是取消動作用的。
建議你重新看下犀牛書,毫無基礎的樣子。
把jq對象,轉換成,原生js對象。此時你不能用jq的方法,只能用js的所支援的dom方法操作。你還可以使用$("#userName").get(0)擷取原生js對象,但是建議用數組下標的方法,這種方法更快捷。
①$(selector)
返回的是jQuery對象,$(selector)[0]
是返回原生的DOM對象,即document.getElementById()
返回的那種對象。(不明白這裡代碼為什麼一會用jQuery的方式一會用原生DOM...)
②這個函數是submit form用的嗎,如果是的話,return false;
的作用是取消form的提交