我在使用Firebase点击按钮时实际清除表单内容时遇到问题。我可以在另一个只有一个文本字段的表单上使用type="reset"
,但是,第二个表单有两个文本字段,当我尝试以下内容时:
function clearFields() {
document.getElementById(userCityEmail).value = "";
document.getElementById(cityTextField).value = "";
}
或者我尝试这个(只是使用reset()):
function clearFields() {
document.getElementById(userCityEmail).reset();
document.getElementById(cityTextField).reset();
}
该页面将重新加载,但不会向Firebase发送任何内容。如果我不使用上述功能并将文字留在文本字段中,则会将内容发送到Firebase。我哪里错了?提前谢谢!
这是我的HTML表单:
<form id="myform" method="post">
<input type="email" class="contactUsEmail" id="userCityEmail" placeholder="Enter email" name="contactUsEmail">
<input type="text" class="contactUsEmail" id="cityTextField" placeholder="City" name="contactUsCity">
<button type="submit" id="citySubmitButton" onclick="submitCityClick(); clearFields(); return false;" class="btn btn-primary contactUsButton">Submit</button>
</form>
Javascript:
var userCityEmail = document.getElementById('userCityEmail');
var cityTextField = document.getElementById('cityTextField');
var citySubmitButton = document.getElementById('citySubmitButton');
function submitCityClick() {
var firebaseRef = firebase.database().ref();
var userEmail = userCityEmail.value + " " + cityTextField.value;
firebaseRef.child("potentialCities").push().set(userEmail);
}
function clearFields() {
document.getElementById(userCityEmail).value = "";
document.getElementById(cityTextField).value = "";
}
答案 0 :(得分:1)
弄清楚现在发生了什么。 你遇到的问题是你在打电话 firebaseRef.child( “potentialCities”)推()组(USEREMAIL);
这没有意义。使用push(userEmail)或set(userEmail)。
这两件事之间的区别在于push会在potentialCities树节点下创建一个随机ID,而set会将用户电子邮件数据放在同一个对象下。它可能会被覆盖。推荐这种情况。
为了解释字段清除,在提交点击方法中仍然有clearfields方法。
下面的代码function submitCityClick() {
var firebaseRef = firebase.database().ref();
var userEmail = userCityEmail.value + " " + cityTextField.value;
firebaseRef.child("potentialCities").push(userEmail);
clearFields()
}
这也期望你有正确的firebase参考,你检查过你正在使用的网址吗?
你做错的另一件事是你要声明这些变量:
var userCityEmail = document.getElementById('userCityEmail');
var cityTextField = document.getElementById('cityTextField');
然后尝试在clearFields中获取带有该变量的elementById:
document.getElementById(userCityEmail).value = "";
document.getElementById(cityTextField).value = "";
这不起作用,您必须通过clearFields中的字符串获取它,或者只使用您声明的变量:
userCityEmail.value = "";
or
document.getElementById('userCityEmail').value = "";
我不建议仅仅因为这个原因而拉入jQuery。这是一个很大的图书馆,如果你能满足于使用vanilla javascript,那就去做吧!