三年中文在线观看免费大全_三年大片免费高清哔哩哔哩_三年在线观看免费大全哔哩_三年大全免费大片三年大片_三年在线观看免费大全_三年大片观看免费大全哔哩哔哩_三年中文在线观看免费高清第4版_三年中文免费视频大全_三年大片大全免费观看大全_三年大片在线观看哔哩哔哩_三年在线观看中文免费观看_三年成都中文在线观看免费版

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單£© 組件(jiàn)&注冊登錄模塊 ... - 新聞資訊 ''σ- 雲南(nán)小(xiǎo)程序開(kāi)發|雲南(n→∑λ®án)軟件(jiàn)開(kāi)發|雲南(nán)網站(zhàn)建設-雲南維串信息科技有±™限公司

159-8711-8523

雲南(nán)網建設/小(xiǎo)程序開(kāi)發/軟件(jiàn)開(kāi)發

知(zhī)識

不(bù)管是(shì)網站(zhàn),軟件(jiàn) $→還(hái)是(shì)小(xiǎo)程序,都(dōu)γ₩Ω 要(yào)直接或間(jiān)接能(néng)為(wèi×‍∏)您産生(shēng)價值,我們在追求其視(shì)覺表現(xiàn)的(de)同時(shí),< 更側重于功能(néng)的(de)便捷,營銷的(de)π×便利,運營的(de)高(gāo)效,讓網站(zhàn)成為(wèi)營銷工↔¶₽(gōng)具,讓軟件(jiàn)能(néng)切實提升企業÷π(yè)內(nèi)部管理(lǐ)水(shuǐ)平和(hé)效率。優λ≠‌秀的(de)程序為(wèi)後期升級提供便捷的(de)支持!

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08♠©"】——表單組件(jiàn)&amp;注冊登錄模塊 ..'↓.

發表時(shí)間(jiān):2021-2-22

發布人(rén):葵宇科(kē)技(jì)

浏覽次數(shù):105

在微(wēi)信小(xiǎo)程序中,提供了(le)f∑$ orm組件(jiàn),可(kě)以将input、picker、slider、button£‌✔≠等全部放(fàng)在form中,并設置name屬性實現§£σ(xiàn)類似html的(de)表單提交功能(néng)。

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

鴻蒙js目前是(shì)沒有(yǒu)form組件(jiàn)的(d≥εe),因此我們需要(yào)在提交時(shí)手動獲取輸入框、選擇框等的(de)值,自(z $ì)行(xíng)構建數(shù)據對(duì)象。

1、登錄模塊

這(zhè)裡(lǐ)接著(zhe)上(shàng)一(yī)篇,通(β≥ αtōng)過dialog組件(jiàn)實現(xiàn)了(le)模态登錄 ππ↔和(hé)注冊的(de)窗(chuāng)口。登錄窗(chuāng)口的(de)效果如€×(rú)下(xià):

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

每一(yī)行(xíng)中,放(fàng)置圖标和(hé)input輸₽©β​入框。input使用(yòng)的(de)是(shì)默認樣式,看(kàn)起來(l$ ' ái)還(hái)是(shì)很(hěn)清爽的(de)。

hml視(shì)圖層:

                <dialog id="loginDialog">
                <£    <div class="loginDialog">
    ¥​₩                    <div cl§&ass="formItem">
         ≈£×£                   <image src="http:€αα↔//www.wxapp-union.com/{{ phone ? (imφ★gUrl +'phone.png') : (imgUrl + 'phone↓♠×1.png') }}"></image>
              βπ↕              <input id="phoneInput" type="n ←umber" placeholder="請(qǐng)輸入手機∑​∞&(jī)号" onchange="inputPhone"></input>→✘γ∏;
                        </div>
$α                         <div class="¥☆πformItem">
                         ∞€   <image src="http://www∑ε≠​.wxapp-union.com/{{ pwd ? (imgUrl +'pas≠✔© sword.png') : (imgUrl + 'password1.pn©∏εδg') }}"></image>
   §•₽©                         <input idεφ="pwdInput" type="password" placeholder="請 £α(qǐng)輸入密碼" onchange="inputPwd">$Ω₽></input>
                 ☆★       </div>
               ♦©↔         <button class="input<ΩBtn" onclick="login">登錄 ☆£÷</button>
               ≈β     </div>
        ↑γ        </dialog>

手機(jī)号的(de)input設置type="number">‍★¥,在獲取焦點後鍵盤自(zì)動彈出為(wèi)數(shù)字鍵盤。密碼框type="p ‍♣≠assword",彈出普通(tōng)鍵盤,且輸入的(de)字符會(huì®∏)變為(wèi)圓點,也(yě)可(kě)點擊右側眼睛圖标查看(kࣥ&n)密碼內(nèi)容。

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

在最開(kāi)始使用(yòng)input時(shí),嘗試使用(yòng)this.$elemΩ∏ ♥ent("id").value獲取,但(dàn)這(zhè)樣是(φπ✔≈shì)獲取不(bù)到(dào)的(de)。

    // 登錄
    login() {
        prompt.showToast({
            message: "手機(jī)号: " + this.$element("phoneInput").value +
            ", 密碼: " + this.$element("pwdInput").value,
            duration: 5000
        })
    }

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

因此需要(yào)使用(yòng)input的(de)onchange屬©γ性綁定值改變的(de)事(shì)件(jiàn),通(tōng)過e.val×¶←ue取到(dào)改變後的(de)值,并賦給data中的(de)變量。

順便提一(yī)下(xià),今天突然找到(dào)了(le)cons£‍​ole打印日(rì)志(zhì)的(de)查看(kàn)方式。需在最下(xià)方打開(kā¶"i)"HiLog"視(shì)圖,搜索"app Log"後即可(kěΩπ)查看(kàn)。console.log()的(de)內(nèi)¶™¶容需設置日(rì)志(zhì)等級"debug",console.info(<∏σ)則在"info"等級即可(kě)查看(kàn)。

 

    // 手機(jī)号輸入框
    inputPhone(e) {
        this.phone = e.value;
    },
    // 密碼輸入框
    inputPwd(e) {
        this.pwd = e.value;
    },
    // 登錄
    login() {
        console.log("手機(jī)号: " + this.phone + "密碼: " + this.pwd);
    }

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

這(zhè)裡(lǐ)能(néng)夠正常獲取輸入框的(de)值了(le),↓×±就(jiù)可(kě)以在點擊按鈕後将值傳給後台服務器(qì),進行(xín÷•<÷g)登錄的(de)校(xiào)驗。按鈕的(de)點∑₩↔γ擊方法通(tōng)過onclick進行(xíng)綁定α₩。

    // 登錄
    login() {
        fetch.fetch({
            url: this.url + "/litemall/user/login?phone=" + this.phone + "&pwd=" + this.pwd,
            responseType: "json",
            success: res => {
                let data = http://www.wxapp-union.com/JSON.parse(res.data);
                console.info(JSON.stringify(data));
                if (0 != data.code) {
                    prompt.☆§showToast({
                        message: data.msg,
                        duration: 3000
                    })
                } else {
                    let userInfo = data.data;
           ↕✘         userInfo.age = this.getAge(userInfo.birthday);
                    this.userInfo = userInfo;
                    this.$element("loginDialog").close();
                }≥‍ 
            }
        })
    }

登錄失敗,用(yòng)提示框提示用(yòng)戶失敗原因:

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

登錄成功,用(yòng)戶信息賦值給頁面并關閉dialog:

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

這(zhè)裡(lǐ)日(rì)志(zhì)的(de)打印需要≥∑'↔(yào)使用(yòng)JSON.stringify(),否則會(huì)打印"object"Ω≥。

input組件(jiàn)和(hé)button組件(jiàn)都(dōu)提供了(l£∑&βe)豐富的(de)type可(kě)供選擇,具體(tǐ)可(kě)參→€考官方文(wén)檔。

https://developer.harmonyos.com/c₹♣​πn/docs/documentation/doc-references/js-comπ↔↑♥ponents-basic-input-0000000000611673

css渲染層:

.loginDialog {
    width: 80%;
    height: 400px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}
.formItem {
    width: 100%;
    height: 100px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}
.formItem>image {
    width: 70px;
    height: 70px;
    margin: 0 10px 0 10px;
}
input {
    flex: 1;
}
.inputBtn {
    width: 200px;
    height: 70px;
}

2、注冊模塊

注冊模塊同樣使用(yòng)dialog彈窗(chuāng),內(nèi)容比登錄要(yào)πσ更豐富一(yī)些(xiē):

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

hml視(shì)圖層:

                <dialog id="registerDialoδπφg">
                  ↑∑  <div class="registerDialoΩ≈↕γg">
                        <δ±↓div class="formItem">
   ♣$                         <image src=">λhttp://www.wxapp-union.com/{{ phone ? (imgUrl +'$®♣↔phone.png') : (imgUrl + 'phone1.png') }}">"γ•</image>
                            <α¥>;input type="number" placeholderπ€♥="請(qǐng)輸入手機(jī)号" onchange="inputP"₩'εhone"></input>
 × φ                       </div>
            β∏✔            <div class="formItem">σ✘©₹;
                            <image src≤ ÷="http://www.wxapp-union.com/{{ pwd ? (imgU<® βrl +'password.png') : (imgUrl + 'password1.pn¶​βg') }}"></image>
                    ε →≤        <input type="password" ☆♥δ¶placeholder="請(qǐng)輸入密碼" onchange="inputPw♥±✘d"></input>
     ÷✔                   </div>
              ‍≈          <div class="formItem"&→‍gt;
                            <image ₽→src="http://www.wxapp-union.com/{{ username ? ★™(imgUrl +'username.png') : (imgUrl + 'username​ →‍1.png') }}"></image>
      δ$≥                       <input ₩™λφtype="text" placeholder="請(qǐng)輸入姓名" onchange="i≠β nputUsername"></input>
  → γ€                      </div>
  ∞"$&                      <div cla ​←σss="formItem">
             ®∑₩&               <image src="http://www.wxap‌φ&>p-union.com/{{ nickname ? (imgUrl¶∑Ω +'nickname.png') : (imgUrl + 'nicknam©δ↔ e1.png') }}"></image>
    •♥★©                        <input ∑₩λtype="text" placeholder="請(qǐn©φ€→g)輸入昵稱" onchange="inputNickname">>αΩ≤;</input>
                        <Ωγ☆β;/div>
                     '→≤   <div class="formItem">
          <★                   <image src="http://www‍±↑≥.wxapp-union.com/{{ genderVal ? (img≠&Url +'gender.png') : (imgUrl +αΩ→ 'gender1.png') }}"></image>
≠₽‌
                          ₽φ$  <picker type="text" range="{{ genders }}" ∏×₽‍onchange="chooseGender">{≠™'{ gender }}</picker>
        ✔ ​                </div>
            ☆≤            <div class="formItem">
      ♦&©                       <γΩ₩∞image src="http://www.wxapp-union.coδσm/{{ birthdayVal ? (imgUrl +'birthday.png') : "γ©λ(imgUrl + 'birthday1.png') }}"&∞©§→gt;</image>
           £©                 <picker type="dat₽"e" start="1900-1-1" selected="2000-1-×€ 1" onchange="chooseBirthday">{→γ≥♥{ birthday }}</picker>
  ₽₽                      </div>
            •±            <button class≠×★="inputBtn" onclick="register">注冊</button&→α≈gt;
                    </div™β>
                </dialog>

上(shàng)面四個(gè)依然是(shì)input輸入框,随‍β後兩個(gè)使用(yòng)了(le)picker選擇框組件(jiàn)。♠←♦&需注意,選擇框組件(jiàn)标記中需放(fàng)置文(≤ε→±wén)本內(nèi)容,通(tōng)過點擊這(zhè)裡(lǐ)的(de)文(wén)本在✘‌頁面下(xià)方彈出選擇框。

type="text"是(shì)文(wén)本選擇∞₹框,通(tōng)過range屬性綁定一(yī)個(gè)字符串數(shù)組,效果如™™×÷(rú)下(xià):

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

onchange屬性綁定選擇一(yī)項後的(de)處理(lǐ)方法,e.ne'¶↓wValue是(shì)選項值,e.newSelected是(shì)選項↑¶&下(xià)标。

性别選擇框js邏輯層代碼:

export default {
    data: {
        ...
        gender: "點擊選擇性别",
        genderVal: "",
        genders: ['保密', '男(nán)', '女(nǚ)'],
        ...
    },
    ...
    // 性别選擇器(qì)
    chooseGender(e) {
        this.gender = e.newValue;
        this.genderVal = e.newSelected;
≤↕ε    },
    ...
}

type="date"是(shì)日(rì)期選擇器(qì),可(kě)以通(tōng)過>'>β屬性指定開(kāi)始、結束、當前日(rì)期,通(tōng)過onchange¶δ綁定選擇後的(de)處理(lǐ)方法。效果如(rú)™φ≥£下(xià):

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

e.year/month/day分(fēn)别為(wèi)選擇的(de)年(nián)/月(yu≈πσ§è)/日(rì),注意month比實際月(yuè)份小(xiǎo)1。

生(shēng)日(rì)選擇框js邏輯層:

export default {
    data: {
       ...
        birthday: "點擊選擇生(shēng)日(rì)",
        birthdayVal: ""
    },
    ...
    // 生(shēng)日(rì)選擇器(qì)
    chooseBirthday(e) {
        let month = (e.month + 1) + "";
        if (month.length == 1) {
            month = "0" + month;
        }
        let day = e.day + "";
        if (day.length == 1) {
            day = "0" + day;
        }
        let birthday = e.year + "-" + month + "-" + day;
        this.birthday = birthday;
        this.birthdayVal = birthday;
    },
    ...
••₹α
}

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

這(zhè)裡(lǐ)開(kāi)發者工(gōng)具有(yǒu✔​↑)一(yī)個(gè)bug,type="date"在提示時(shí)錯(cuò)誤&∑€拼寫成了(le)"data"。

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

選擇器(qì)還(hái)有(yǒu)time, datetime, m'​ulti-text三種,鴻蒙的(de)封裝确實很(hěn)好(hǎo)看(kànφ♣)好(hǎo)用(yòng)。

注冊的(de)方法:

    // 注冊
    register() {
        fetch.fetch({
            url: this.url + "/litemall/user/register",
            method: "POST",
            data: {
                username: this.username,
                password: this.pwd,
                gender: this.genderVal,
                birthday: this.birthdayVal,
                nickname: this.nickname,
                mobile: this.phone
            },
            header: {
                "Content-Type": "application/json;charset=UTγ✘®¥F-8"
            },
            responseType: "json",
            success: res => {
                let data = http://www.wxapp-union.com/&✔™≠JSON.parse(res.data);
                console.info(JSON.stringify(data));
                if (0 != data.code) {
                 "♦≥¶   prompt.showToast({
                        message: data.msg,
                        duration: 3000
                    });
                } else {
                    prom≤±pt.showToast({
                        message: "注冊成功",
                        duration: 3000
                    });
                    this.$element("registerDialog").close();
                }'γ
            }
        })
    }

還(hái)需要(yào)注意,如(rú)果使用(yòng)γφ↔≥fetch發送請(qǐng)求,且data給的(de)是(shì)一(y•&ī)個(gè)對(duì)象時(shí),請(qǐng)求頭的(de)≤×'Content-Type自(zì)動設置為(wèi)application✘♥/x-www-form-urlencoded。如(rú)果服務器(qì)接收json數(shù)α₹據,則需要(yào)設置請(qǐng)求頭,否則會(huì)報(bào)如(rú)下(±♥↔☆xià)錯(cuò)誤。

Resolved [org.springframework.web.HttpMediaTypeNα♦otSupportedException: Content type 'application/x-www-form-urlenc←₹§εoded;charset=UTF-8' not supported]

注冊一(yī)下(xià):

從(cóng)微(wēi)信小(xiǎo)程序到(dào)鴻蒙js開(kāi)發【08】——表單組件(jiàn)&注冊登錄模塊

相(xiàng)關案例查看(kàn)更多(duō)

相(xiàng)關閱讀(dú)

三年中文在线观看免费大全_三年大片免费高清哔哩哔哩_三年在线观看免费大全哔哩_三年大全免费大片三年大片_三年在线观看免费大全_三年大片观看免费大全哔哩哔哩_三年中文在线观看免费高清第4版_三年中文免费视频大全_三年大片大全免费观看大全_三年大片在线观看哔哩哔哩_三年在线观看中文免费观看_三年成都中文在线观看免费版ount?genre=articles&id=3473', nll);

三年中文在线观看免费大全_三年大片免费高清哔哩哔哩_三年在线观看免费大全哔哩_三年大全免费大片三年大片_三年在线观看免费大全_三年大片观看免费大全哔哩哔哩_三年中文在线观看免费高清第4版_三年中文免费视频大全_三年大片大全免费观看大全_三年大片在线观看哔哩哔哩_三年在线观看中文免费观看_三年成都中文在线观看免费版