【问题标题】:Text input is saved when clicking on the field not button below?单击下面的字段而不是按钮时保存文本输入?
【发布时间】:2021-10-24 12:31:45
【问题描述】:

我有一些代码可以将一些文本保存到 Firestore 并且可以工作,但它仅在您键入后单击文本字段时才有效。

这会保存到 Firestore。我已将 getElementById 之后的 ("...") 之间的文本更改为按钮的 id,但这并没有保存任何内容。但是,如果我将它作为文本字段的 id,则在键入后单击文本字段时会保存文本。

document.getElementById("hrtitle").addEventListener("click", function saveHeroTitle() {
        
        const title = document.getElementById('hrtitle').value;
        console.log(title);

        const heroTitleRef = doc(db, "pages", "homePage");

        // something around line 42 vv
        setDoc(heroTitleRef, {
            heroText: title,
        }, {merge: true}).then(function() {
            console.log("Hero Title Saved");
        }).catch(function(error){
        console.log("Error: ", error);
    });
});

文本字段和按钮的代码。

<label for="uetitle">Update Hero Title</label>
<input type="text" id="hrtitle" name="hrtitle">
                      
                      <button class="save-button" id="hrtitleSave" type="submit">Save</button>

如何在单击按钮时获取要保存的文本?

【问题讨论】:

  • 您可以将输入字段的 ID 更改为其他内容吗?按钮的 ID 似乎相同。也应该是document.getElementById("hrtitleSave")
  • 是的,文本字段 id 在处理这里时是一个错误,我在原始代码中从未使用过“保存”。当我按照您上面的建议添加保存时,什么都没有保存?
  • 尝试将按钮类型更改为"button",也许正在执行默认操作?单击按钮时页面是否刷新?

标签: javascript html google-cloud-firestore


【解决方案1】:

似乎您在获取按钮时使用了错误的 ID。这段代码应该可以工作:

document.getElementById("hrtitleSave").addEventListener("click", function saveHeroTitle() {
    
    const title = document.getElementById('hrtitle').value;
    console.log(title);

    const heroTitleRef = doc(db, "pages", "homePage");

    // something around line 42 vv
    setDoc(heroTitleRef, {
        heroText: title,
    }, {merge: true}).then(function() {
        console.log("Hero Title Saved");
    }).catch(function(error){
    console.log("Error: ", error);
    });
});

__

<label for="uetitle">Update Hero Title</label>
<input type="text" id="hrtitle" name="hrtitle">            
<button class="save-button" id="hrtitleSave" type="submit">Save</button>

【讨论】:

  • 嗨,我已经改变了它之前仍然没有工作。 @Dharmaraj 将按钮类型更改为按钮的答案确实有效(id 也设置为与按钮 id 相同的一个)
  • 奇怪!我已经亲自测试了上述内容,它对我有用...确保正在应用您的更改并清除浏览器缓存
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 2022-01-14
  • 2019-05-12
  • 1970-01-01
相关资源
最近更新 更多