按钮上的重置/清除表单单击w / Firebase

时间:2016-10-10 13:13:56

标签: javascript html forms firebase firebase-realtime-database

我在使用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 = "";
}

1 个答案:

答案 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,那就去做吧!