javascript - ①$("#userName")[0]中的這個【0】表示什麼意思呀?

來源:互聯網
上載者:User
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的提交

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.