首頁 web前端 js教程 JavaScript怎麼使用ajax操作表單

JavaScript怎麼使用ajax操作表單

Mar 31, 2018 pm 01:40 PM
ajax javascript js

這次帶給大家JavaScript怎麼使用ajax操作表單,JavaScript使用ajax操作表單的注意事項有哪些,以下就是實戰案例,一起來看一下。

用JavaScript操作表單和操作DOM是類似的,因為表單本身也是DOM樹。

不過表單的輸入框、下拉框等可以接收使用者輸入,所以用JavaScript來操作表單,可以得到使用者輸入的內容,或是對一個輸入框設定新的內容。

HTML表單的輸入控制項主要有以下幾種:

  • ##文字方塊,對應的<input type="text">,用於輸入文本;

  • #口令框,對應的<input type="password">,用於輸入口令;

  • 單選框,對應的<input type="radio">,用於選擇一項;

  • 複選框,對應的<input type="checkbox">,用於選擇多項;

  • 下拉框,對應的&lt ;select>,用於選擇一項;

  • 隱藏文本,對應的<input type="hidden">,使用者不可見,但表單提交時會把隱藏文字發送到伺服器。

取得值

#如果我們得到了一個<input>節點的引用,就可以直接呼叫value取得對應的使用者輸入值:

// &lt;input type=&quot;text&quot; id=&quot;email&quot;&gt;
var input = document.getElementById('email');
input.value; // '用户输入的值'
登入後複製
這種方式可以套用於text、password、hidden以及select。但是,對於單選框和複選框,value屬性返回的永遠是HTML預設的值,而我們需要獲得的實際上是用戶是否「勾上了」選項,所以應該用checked判斷:

// &lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;weekday&quot; id=&quot;monday&quot; value=&quot;1&quot;&gt; Monday&lt;/label&gt;
// &lt;label&gt;&lt;input type=&quot;radio&quot; name=&quot;weekday&quot; id=&quot;tuesday&quot; value=&quot;2&quot;&gt; Tuesday&lt;/label&gt;
var mon = document.getElementById('monday');
var tue = document.getElementById('tuesday');
mon.value; // '1'
tue.value; // '2'
mon.checked; // true或者false
tue.checked; // true或者false
登入後複製

設定值

設定值和取得值類似,對於text、password、hidden以及select,直接設定value就可以:

// &lt;input type=&quot;text&quot; id=&quot;email&quot;&gt;
var input = document.getElementById('email');
input.value = 'test@example.com'; // 文本框的内容已更新
登入後複製
對於單選框和複選框,設定checked為true或false即可。

HTML5控件

HTML5新增了大量標準控件,常用的包括date、datetime、datetime-local、color等,它們都使用<input>標籤:

&lt;input type=&quot;date&quot; value=&quot;2015-07-01&quot;&gt;
&lt;input type=&quot;datetime-local&quot; value=&quot;2015-07-01T02:03:04&quot;&gt;
&lt;input type=&quot;color&quot; value=&quot;#ff0000&quot;&gt;
登入後複製
不支援HTML5的瀏覽器無法辨識新的控件,會把它們當作type="text"來顯示。支援HTML5的瀏覽器將獲得格式化的字串。例如,type="date"類型的input的value將保證是一個有效的YYYY-MM-DD格式的日期,或空字串。

提交表單

最後,JavaScript可以用兩種方式來處理表單的提交(AJAX方式在後面介紹)。

方式一是透過<form>元素的submit()方法提交表單,例如,回應一個<button>的click事件,在JavaScript程式碼中提交表單:

&lt;!-- HTML --&gt;
&lt;form id=&quot;test-form&quot;&gt;
  &lt;input type=&quot;text&quot; name=&quot;test&quot;&gt;
  &lt;button type=&quot;button&quot; onclick=&quot;doSubmitForm()&quot;&gt;Submit&lt;/button&gt;
&lt;/form&gt;
&lt;script&gt;
function doSubmitForm() {
  var form = document.getElementById('test-form');
  // 可以在此修改form的input...
  // 提交form:
  form.submit();
}
&lt;/script&gt;
登入後複製
這種方式的缺點是擾亂了瀏覽器對form的正常提交。瀏覽器預設點擊<button type="submit">時提交表單,或使用者在最後一個輸入框按回車鍵。因此,第二種方式是回應<form>本身的onsubmit事件,在提交form時作修改:

&lt;!-- HTML --&gt;
&lt;form id=&quot;test-form&quot; onsubmit=&quot;return checkForm()&quot;&gt;
  &lt;input type=&quot;text&quot; name=&quot;test&quot;&gt;
  &lt;button type=&quot;submit&quot;&gt;Submit&lt;/button&gt;
&lt;/form&gt;
&lt;script&gt;
function checkForm() {
  var form = document.getElementById('test-form');
  // 可以在此修改form的input...
  // 继续下一步:
  return true;
}
&lt;/script&gt;
登入後複製
注意要return true來告訴瀏覽器繼續提交,如果return false,瀏覽器將不會繼續提交form,這種情況通常對應使用者輸入有誤,提示使用者

錯誤訊息後終止提交form。

在檢查和修改<input>時,要充分利用<input type="hidden">來傳遞資料。

例如,許多登入表單希望使用者輸入使用者名稱和口令,但是,安全考慮,提交表單時不傳輸明文口令,而是口令的MD5。普通JavaScript開發人員會直接修改<input>:

&lt;!-- HTML --&gt;
&lt;form id=&quot;login-form&quot; method=&quot;post&quot; onsubmit=&quot;return checkForm()&quot;&gt;
  &lt;input type=&quot;text&quot; id=&quot;username&quot; name=&quot;username&quot;&gt;
  &lt;input type=&quot;password&quot; id=&quot;password&quot; name=&quot;password&quot;&gt;
  &lt;button type=&quot;submit&quot;&gt;Submit&lt;/button&gt;
&lt;/form&gt;
&lt;script&gt;
function checkForm() {
  var pwd = document.getElementById('password');
  // 把用户输入的明文变为MD5:
  pwd.value = toMD5(pwd.value);
  // 继续下一步:
  return true;
}
&lt;/script&gt;
登入後複製
這個做法看起來沒啥問題,但用戶輸入了口令提交時,口令框的顯示會突然從幾個*變成32個* (因為MD5有32個字元)。

要想不改变用户的输入,可以利用<input type="hidden">实现:

&lt;!-- HTML --&gt;
&lt;form id=&quot;login-form&quot; method=&quot;post&quot; onsubmit=&quot;return checkForm()&quot;&gt;
  &lt;input type=&quot;text&quot; id=&quot;username&quot; name=&quot;username&quot;&gt;
  &lt;input type=&quot;password&quot; id=&quot;input-password&quot;&gt;
  &lt;input type=&quot;hidden&quot; id=&quot;md5-password&quot; name=&quot;password&quot;&gt;
  &lt;button type=&quot;submit&quot;&gt;Submit&lt;/button&gt;
&lt;/form&gt;
&lt;script&gt;
function checkForm() {
  var input_pwd = document.getElementById('input-password');
  var md5_pwd = document.getElementById('md5-password');
  // 把用户输入的明文变为MD5:
  md5_pwd.value = toMD5(input_pwd.value);
  // 继续下一步:
  return true;
}
&lt;/script&gt;
登入後複製

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

用history让ajax支持前进/后退/刷新

原生ajax与封装的ajax使用方法(附代码)

以上是JavaScript怎麼使用ajax操作表單的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

建議:優秀JS開源人臉偵測辨識項目 建議:優秀JS開源人臉偵測辨識項目 Apr 03, 2024 am 11:55 AM

建議:優秀JS開源人臉偵測辨識項目

解決jQuery AJAX請求遇到403錯誤的方法 解決jQuery AJAX請求遇到403錯誤的方法 Feb 20, 2024 am 10:07 AM

解決jQuery AJAX請求遇到403錯誤的方法

解決jQuery AJAX請求403錯誤的方法 解決jQuery AJAX請求403錯誤的方法 Feb 19, 2024 pm 05:55 PM

解決jQuery AJAX請求403錯誤的方法

如何使用Ajax從PHP方法取得變數? 如何使用Ajax從PHP方法取得變數? Mar 09, 2024 pm 05:36 PM

如何使用Ajax從PHP方法取得變數?

如何解決jQuery AJAX報錯403的問題? 如何解決jQuery AJAX報錯403的問題? Feb 23, 2024 pm 04:27 PM

如何解決jQuery AJAX報錯403的問題?

PHP 與 Ajax:建立動態載入內容的解決方案 PHP 與 Ajax:建立動態載入內容的解決方案 Jun 06, 2024 pm 01:12 PM

PHP 與 Ajax:建立動態載入內容的解決方案

js和vue的關係 js和vue的關係 Mar 11, 2024 pm 05:21 PM

js和vue的關係

JS 的 AI 時代來了! JS 的 AI 時代來了! Apr 08, 2024 am 09:10 AM

JS 的 AI 時代來了!

See all articles